我在频道中使用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也可能更容易,这使得跟踪正在处理的队列更加容易。

10-05 21:16
查看更多