zoukankan      html  css  js  c++  java
  • C# RabbitMQ 基本使用

    public class RabbitMQHelper
        {
            ConnectionFactory factory = null;
            IConnection connection = null;
            IModel channel = null;
            public RabbitMQHelper(string host, string username, string password)
            {
                factory = new ConnectionFactory()
                {
                    HostName = host,
                    UserName = username,
                    Password = password
                };
            }
            public RabbitMQHelper()
            {
                factory = new ConnectionFactory()
                {
                    HostName = "localhost",
                    UserName = "Jason",
                    Password = "hensuiyi"
                };
                connection = factory.CreateConnection();
                channel = connection.CreateModel();
            }
            const string queueName = "my_queue";
            const string exchangeName = "my_exchange";
            const string routeName = "my_route";
    
            /// <summary>
            /// 接收消息 执行回调
            /// </summary>
            /// <param name="callback"></param>
            public void Receive(Action<string> callback)
            {
                channel.ExchangeDeclare(exchangeName, ExchangeType.Direct, true, false, null);
    
                channel.QueueDeclare(queueName, true, false, false, null);
    
                channel.QueueBind(queueName, exchangeName, routeName, null);
    
                channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);
    
                EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
                consumer.Received += (model, ea) =>
                {
                    ReadOnlyMemory<byte> body = ea.Body;
                    var message = System.Text.Encoding.UTF8.GetString(body.ToArray());
                    callback(message);
                    channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
                };
                channel.BasicConsume(queueName, autoAck: false, consumer: consumer);
            }
    
            public void Send(string content)
            {
                channel.ExchangeDeclare(exchangeName, ExchangeType.Direct, true, false, null);
    
                channel.QueueDeclare(queueName, true, false, false, null);
    
                channel.QueueBind(queueName, exchangeName, routeName, null);
    
                var properties = channel.CreateBasicProperties();
                properties.Persistent = true;
                properties.DeliveryMode = 1;
                byte[] body = Encoding.UTF8.GetBytes(content);
                //开始发送
                channel.BasicPublish(exchangeName, routeName, properties, body);
            }
        }
    View Code

    关于 Exchange Route Queue 的关系: https://www.cnblogs.com/linkenpark/p/5393666.html

  • 相关阅读:
    python——ddt + excel + HTMLTestRunner 实现接口测试
    APP模拟弱网环境测试教程
    静态语言与动态语言
    Charles手机抓包实用教程
    DS博客作业08--课程总结
    DS博客作业03--栈和队列
    DS博客作业02--线性表
    DS博客作业01--日期抽象数据类型设计与实现
    第四次作业
    C博客作业01--分支、顺序结构
  • 原文地址:https://www.cnblogs.com/Jason1019/p/12809465.html
Copyright © 2011-2022 走看看