2024-06-20
后端技术
00
请注意,本文编写于 91 天前,最后修改于 90 天前,其中某些信息可能已经过时。

目录

1、RabbitMQ.MessageProducer
2、RabbitMQ.MessageConsumer01
3、注意

1、RabbitMQ.MessageProducer

新建类 **PriorityQueue**

csharp
public static void Show() { var factory = new ConnectionFactory() { HostName = "localhost", UserName = "guest", Password = "guest" }; using var connection = factory.CreateConnection(); using var channel = connection.CreateModel(); channel.QueueDeclare("PriorityQueue", true, false, false, new Dictionary<string, object>() { // 指定队列要支持优先级队列 { "x-max-priority",10 } }); // 声明交换机 channel.ExchangeDeclare("PriorityQueueExchange", ExchangeType.Direct, true, false, null); // 绑定交换机和队列 channel.QueueBind("PriorityQueue", "PriorityQueueExchange", "PriorityKey"); // 一些待发送的消息 string[] questionList = { "vip1 来请教", "甲 同学来请教", "乙 同学来请教", "丙 同学来请教", "丁 同学来请教", "vip2 来请教" }; var props = channel.CreateBasicProperties(); // 设置持久化 props.DeliveryMode = 2; foreach (var msg in questionList) { if (msg.StartsWith("vip")) { // 设置优先级 props.Priority = 9; channel.BasicPublish("PriorityQueueExchange", "PriorityKey", props, Encoding.UTF8.GetBytes(msg)); } else { props.Priority = 1; channel.BasicPublish("PriorityQueueExchange", "PriorityKey", props, Encoding.UTF8.GetBytes(msg)); } Console.WriteLine($"{msg} 已发送"); } Console.ReadLine(); }

2、RabbitMQ.MessageConsumer01

新建类 **PriorityQueue**

csharp
public static void Show() { var factory = new ConnectionFactory() { HostName = "localhost", UserName = "guest", Password = "guest" }; using var connection = factory.CreateConnection(); using var channel = connection.CreateModel(); var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => { Console.WriteLine(Encoding.UTF8.GetString(ea.Body.ToArray())); }; Console.WriteLine("消费者准备就绪。。。"); // 处理消息 channel.BasicConsume("PriorityQueue", true, consumer); Console.ReadLine(); }

image.png

3、注意

优先级

csharp
// 声明的队列需要加入参数 x-max-priority var props = channel.CreateBasicProperties(); // 值越大,优先级越高 props.Priority = 9;

持久化

image.png

csharp
// 在声明队列和交换机时需要将 durable 设置为 true var props = channel.CreateBasicProperties(); // 设置持久化 props.DeliveryMode = 2;

本文作者:一叶知秋

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!