asp.net - 在 RabbitMq 的消息列表器中获取 queueName
问题描述
我在循环中创建多个消费者,我可以通过它来监听多个队列。这种方法的问题是我能够从不同的队列中获取事件,但是所有队列都使用相同的消费者,因此很难识别该事件发生在哪个队列中。如果我能在消费者部分下获得队列名称会很好。
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);
};
推荐阅读
- java - 无法在 Java 中解析 RSA publicKey
- visual-studio-2017 - VS2017 中是否有内置方法来清理我的代码中的选项卡?
- amazon-web-services - 如何将变量传递到 AWS Cloudformation cfn-init 文件内容
- javascript - 当我尝试扮演所有做出反应的人时,awaitReactions 不起作用
- javascript - JS 访问 forloop 中的每一个元素
- firebase - Firebase:如何在同一个项目中处理两个 PWA 应用程序?
- r - 查找并删除不同 ID 中日期顺序的空白
- python - 有没有办法在 python 代码转换为 .pyc 文件时检查 python 解释器版本?
- angular - 在显示所有 *ngFor 列表变量条目后执行操作
- kubernetes-ingress - Kubernetes Ingress 中的正则表达式路径未在 Nginx Ingress Controller 中创建为正则表达式位置