使用EasyNetQ排队确认

时间:2014-10-23 21:40:02

标签: rabbitmq easynetq

我希望收到异步确认消息实际上已放入队列中。我搜索了很多,并尝试了各种方法使用EasyNetQ的PublishAsync进行确认,但似乎无法找到Bus连接配置和代码组合,这将给我这样的确认。

也许PublishAsync不是这样的,我忽略了EasyNetQ API中的其他内容?其他人都有使用EasyNetQ实现这个场景的经验吗?

2 个答案:

答案 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 issueRawRabbit,这将在下一个版本中提供。