我希望收到异步确认消息实际上已放入队列中。我搜索了很多,并尝试了各种方法使用EasyNetQ的PublishAsync
进行确认,但似乎无法找到Bus
连接配置和代码组合,这将给我这样的确认。
也许PublishAsync
不是这样的,我忽略了EasyNetQ API中的其他内容?其他人都有使用EasyNetQ实现这个场景的经验吗?
答案 0 :(得分:1)
对于这种保证,您需要打开发布商确认。请参阅文档:
https://github.com/mikehadlow/EasyNetQ/wiki/Publisher-Confirms
答案 1 :(得分:1)
官方documentation on Publish Confirm表示
对于不可路由的消息,一旦交换验证消息不会路由到任何队列(返回一个空的队列列表),代理就会发出确认信息。
这意味着您将获得发布确认,即使没有与匹配的路由键绑定到交换的队列。如果要确保将消息发布到至少一个队列,则需要确保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%准确。对此open issue有RawRabbit
,这将在下一个版本中提供。