检测RabbitMQ中的队列

3

在该频道中,我使用了 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?
1个回答

3
在下面的代码中,参数ea应该填写您的答案。
consumer.Received += (model, ea) =>
{ 
     string pQueueName = ea.RoutingKey;   
}

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

选项2:也许更容易的方法是针对每个队列使用不同的模型和消费者,这样可以更容易地跟踪处理哪个队列。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接