.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是个轻量级,易部署的队列,我会根据官网指导,分享一系列常用使用技巧的,随时保持关注哦~