新建类
**PriorityQueue**
csharppublic 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();
}
新建类
**PriorityQueue**
csharppublic 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();
}
优先级
csharp// 声明的队列需要加入参数 x-max-priority
var props = channel.CreateBasicProperties();
// 值越大,优先级越高
props.Priority = 9;
持久化
csharp// 在声明队列和交换机时需要将 durable 设置为 true
var props = channel.CreateBasicProperties();
// 设置持久化
props.DeliveryMode = 2;
本文作者:一叶知秋
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!