gpt4 book ai didi

c# - 在 RabbitMQ 中检测队列

转载 作者:行者123 更新时间:2023-11-30 17:33:26 25 4
gpt4 key购买 nike

我在 channel 中使用了 2 个队列。我声明了 2 个队列(Name1 和 Name2):

channel.QueueDeclare(queue: "Name1",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null);

channel.QueueDeclare(queue: "Name2",
durable: false,
exclusive: false,
autoDelete: false,

var consumer = new EventingBasicConsumer(channel); arguments: null);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(message);
}

channel.BasicConsume(queue: "Name2",
noAck: true,
consumer: consumer);

channel.BasicConsume(queue: "Name1",
noAck: true,
consumer: consumer);

如何检测哪个队列收到消息:Name1 或 Name2?

最佳答案

在下面的代码中,参数 ea 应该有你的答案。

consumer.Received += (model, ea) =>
{
string pQueueName = ea.RoutingKey;
}

它是 RabbitMQ.Client.Events 命名空间下的 BasicDeliverEventArgs 类,它有一个名为 RoutingKey 的成员变量,它提供有关队列名称的信息。另请注意,路由 key 是在消息最初发布时使用的。

选项 2:每个队列有不同的模型和消费者也可能更容易,这样可以更容易地跟踪它正在处理的队列。

关于c# - 在 RabbitMQ 中检测队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43930743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com