zoukankan      html  css  js  c++  java
  • C#使用RabbitMq队列 worke模式

    //简单生产端 ui调用者

    using System;
    namespace RabbitMqPublishDemo
    {
    using MyRabbitMqService;
    using System.Runtime.CompilerServices;

    class Program
    {
    static void Main(string[] args)
    {
    //就是简单的队列,生产者
    Console.WriteLine("====RabbitMqPublishDemo====");
    for (int i = 0; i < 500; i++)
    {
    ZrfRabbitMqHelper.PublishSampleMsg("smapleMsg", $"nihaifengge:{i}");
    }
    Console.WriteLine("生成完毕!");
    Console.ReadLine();
    }
    }
    }

    /// <summary>
    /// 简单生产者 逻辑
    /// </summary>
    /// <param name="queueName"></param>
    /// <param name="msg"></param>
    public static void PublishSampleMsg(string queueName, string msg)
    {

    using (IConnection conn = connectionFactory.CreateConnection())
    {
    using (IModel channel = conn.CreateModel())
    {
    channel.QueueDeclare(queue: queueName, durable: false, exclusive: false, autoDelete: false, arguments: null);
    var msgBody = Encoding.UTF8.GetBytes(msg);
    channel.BasicPublish(exchange: "", routingKey: queueName, basicProperties: null, body: msgBody);
    }
    }
    }


    //简单消费端
    using System;

    namespace RabbitMqConsumerDemo
    {
    using MyRabbitMqService;
    using System.Runtime.InteropServices;

    class Program
    {
    static void Main(string[] args)
    {
    Console.WriteLine("====RabbitMqConsumerDemo====");
    ZrfRabbitMqHelper.ConsumeSampleMsg("smapleMsg", isBasicNack: true, handleMsgStr: handleMsgStr =>
    {
    Console.WriteLine($"订阅到消息:{DateTime.Now}:{handleMsgStr}");
    });
    Console.ReadLine();
    }
    }
    }

    #region 简单生产者后端逻辑
    /// <summary>
    /// 简单消费者
    /// </summary>
    /// <param name="queueName">队列名称</param>
    /// <param name="isBasicNack">失败后是否自动放到队列</param>
    /// <param name="handleMsgStr">有就自己对字符串的处理,如果要存储到数据库请自行扩展</param>
    public static void ConsumeSampleMsg(string queueName, bool isBasicNack = false, Action<string> handleMsgStr = null)// bool ifBasicReject = false,
    {
    Console.WriteLine("ConsumeSampleMsg Waiting for messages....");
    IConnection conn = connectionFactory.CreateConnection();
    IModel channel = conn.CreateModel();
    channel.QueueDeclare(queue: queueName, durable: false, exclusive: false, autoDelete: false, arguments: null);
    var consumer = new EventingBasicConsumer(channel);
    consumer.Received += (sender, ea) =>
    {
    byte[] bymsg = ea.Body.ToArray();
    string msg = Encoding.UTF8.GetString(bymsg);
    if (handleMsgStr != null)
    {
    handleMsgStr.Invoke(msg);
    }
    else
    {
    Console.WriteLine($"{DateTime.Now}->收到消息:{msg}");
    }
    };
    channel.BasicConsume(queueName, autoAck: true, consumer);
    }
    #endregion

    本文来自博客园,作者:.net&new,转载请注明原文链接:https://www.cnblogs.com/wugh8726254/p/15091731.html

  • 相关阅读:
    【原】AMFObject数据格式详解
    STL总结 (C++)
    git相关项目迁移
    OBS_Classic经典版框架
    windows线程同步的几种方式
    面试题之strcpy / strlen / strcat / strcmp的实现
    python实用技巧
    Python Flask学习笔记之数据库
    Python Flask学习笔记之Web表单
    必应每日壁纸批量下载
  • 原文地址:https://www.cnblogs.com/wugh8726254/p/15091731.html
Copyright © 2011-2022 走看看