.Net6下集成消息队列上-RabbitMQ


.Net中RabbitMQ的使用

RabbitMQ

代码演示

生产者代码

using RabbitMQ.Client;
using System.Text;

// 创建一个连接工厂
var factory = new ConnectionFactory()
{
    Uri = new Uri("amqp://guest:guest@localhost:5672")
};
// 工厂开始连接
using(var connection = factory.CreateConnection())
// 创建一个连接通道
using(var channel = connection.CreateModel())
{
        channel.QueueDeclare(queue: "hello",
                             // 持久性 一直保持  直到消费者 消费队列
                         durable: true,
                             // 独占
                         exclusive: false,
                             autoDelete: false,
                             arguments: null);
    
    // 发送的消息
    string message = "Hello World!";
        var body = Encoding.UTF8.GetBytes(message);
    
    // 基本发布 不指定交换
    channel.BasicPublish(exchange: "",
                         // 路由键   就是队列名称
                         routingKey: "hello",
                         // 基础属性
                         basicProperties: null,
                         // 传递的消息体
                         body: body);
   Console.WriteLine(" [x] Sent {0}", message);
  }

Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();

消费者代码

using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System.Text;

// 创建一个连接工厂
var factory = new ConnectionFactory()
{
    Uri = new Uri("amqp://guest:guest@localhost:5672")
};
using(var connection = factory.CreateConnection())
using(var channel = connection.CreateModel())
{
    channel.QueueDeclare(queue: "hello",
                         durable: true,
                         exclusive: false,
                         autoDelete: false,
                         arguments: null);

// 创建一个消费者基本事件
var consumer = new EventingBasicConsumer(channel);
    consumer.Received += (model, ea) =>
    {
         var body = ea.Body.ToArray();
         var message = Encoding.UTF8.GetString(body);
         Console.WriteLine(" [x] Received {0}", message);
     };
    channel.BasicConsume(queue: "hello",
                         // 自动确认
                         autoAck: true,
                         consumer: consumer);

Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();

环境安装

docker下安装RabbitMQ镜像

 //第一步:制作docker 镜像
docker run -d --hostname my-rabbit --name rabbitmq -p 15672:15672 - p 5672:5672 rabbitmq
//第二步:这一段必须需要  否则网站起不来 其中 c71119561de6   为容器ID
docker exec -it c71119561de6  rabbitmq-plugins enable rabbitmq_management

RabbitMQ是个轻量级,易部署的队列,我会根据官网指导,分享一系列常用使用技巧的,随时保持关注哦~