我在频道中使用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的成员变量,该成员变量提供有关队列名称的信息。另请注意,最初发布消息时使用路由密钥。
选项2:每个队列具有不同的Models和Consumers也可能更容易,这使得跟踪正在处理的队列更加容易。