在RabbitMq的消息列表中获取队列名

问题描述 投票:0回答:1

我正在循环中创建多个使用者,通过它们我可以侦听多个队列。这种方法的问题是我能够从不同的队列中获取事件,但是所有队列都使用相同的使用者,因此很难识别此事件发生在哪个队列中。如果可以在使用者部分下获得队列名称,那将很好。

          consumer.Received += async (model, ea) =>
                {
                    var body = ea.Body;
                    var message = Encoding.UTF8.GetString(body);
                };
asp.net asp.net-core websocket rabbitmq rabbitmq-exchange
1个回答
0
投票

ea变量有一些有趣的字段,您检查过吗?

[ea.Exchange显示此消息已从两面交换发布。

ea.RoutingKey显示消息的路由信息​​。可能其中有队列名称。

此外,您可以在定义标题时将标题放在消息中。

IBasicProperties props = channel.CreateBasicProperties();
props.Headers.Add("queueName",  "myQueue1");
channel.BasicPublish(exchangeName,
                   routingKey, props,
                   messageBodyBytes);

并且在消费者函数中,您可以阅读它们:

consumer.Received += async (model, ea) =>
                {
                    var name = ea.BasicProperties.Headers["queueName"];
                    var body = ea.Body;
                    var message = Encoding.UTF8.GetString(body);
                };
© www.soinside.com 2019 - 2024. All rights reserved.