抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

RabbitMQ 是部署最广泛的开源消息代理

1、NUGET引用RabbitMQ库

2、使用

public IConnection GetConnection(string hostName, string userName, string password)
        {
            ConnectionFactory connectionFactory = new ConnectionFactory();
            connectionFactory.HostName = hostName;
            connectionFactory.Port = 80;
            connectionFactory.VirtualHost = "/";
            connectionFactory.UserName = userName;
            connectionFactory.Password = password;
            return connectionFactory.CreateConnection();
        }

 private IModel channel = null;//会话模型

//初始化连接
public void main()
{
     IConnection connection = GetConnection("hostName", "userName", "password");
            channel = connection.CreateModel();
            EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
            consumer.Received += Consumer_Received;
            channel.BasicConsume("queue", false, consumer);
}

//接收消息
private void Consumer_Received(object sender, BasicDeliverEventArgs e)
        {
            string message = Encoding.UTF8.GetString(e.Body.ToArray());
            if (message.StartsWith("msg"))
            {
                //处理含关键字的消息,否则退回
                Console.WriteLine($"确认");
                channel.BasicAck(deliveryTag: e.DeliveryTag, multiple: false);
            }
            else
            {
                Console.WriteLine($"拒绝");
                channel.BasicReject(deliveryTag: e.DeliveryTag, requeue: false);
            }
        }

//发送消息
 public void Send(string data)
        {
            channel.QueueDeclare("queue", false, false, false, null);
            channel.BasicPublish(string.Empty, "queue", null, Encoding.UTF8.GetBytes(data));
        }