我想接收一条消息实际上已被放入队列的异步确认。我进行了相当多的搜索,并尝试了使用 EasyNetQPublishAsync
进行确认的各种方法,但似乎找不到Bus
能给我这样的确认的连接配置和代码组合。
也许PublishAsync
不是这样做的方法,我忽略了 EasyNetQ API 中的其他内容?其他人有使用 EasyNetQ 实现此场景的经验吗?
对于这种保证,您需要打开发布者确认。请参阅文档:
https://github.com/mikehadlow/EasyNetQ/wiki/Publisher-Confirms
发布确认的官方文档指出
对于不可路由的消息,一旦交换验证消息不会路由到任何队列,代理将发出确认(返回一个空的队列列表)
这意味着您将获得发布确认,即使没有队列绑定到具有匹配路由键的交换。如果要确保消息至少发布到一个队列,则需要确保将强制标志设置true
为BasicPublish
channel.BasicPublish(
exchange: "my_exchange",
routingKey:"routingkey",
mandatory: true, // at least one queue
basicProperties: null,
body: new byte[0]
);
未提供强制时的默认值为false
. 所以 Mike Hadlow 的回答并不是 100% 准确的。对此有一个未解决的问题RawRabbit
,该问题将在下一个版本中发布。