我正在循环中创建多个使用者,通过它们我可以侦听多个队列。这种方法的问题是我能够从不同的队列中获取事件,但是所有队列都使用相同的使用者,因此很难识别此事件发生在哪个队列中。如果可以在使用者部分下获得队列名称,那将很好。
consumer.Received += async (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
};
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);
};