1

我想接收一条消息实际上已被放入队列的异步确认。我进行了相当多的搜索,并尝试了使用 EasyNetQPublishAsync进行确认的各种方法,但似乎找不到Bus能给我这样的确认的连接配置和代码组合。

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

4

2 回答 2

1

对于这种保证,您需要打开发布者确认。请参阅文档:

https://github.com/mikehadlow/EasyNetQ/wiki/Publisher-Confirms

于 2014-10-30T20:44:25.710 回答
1

发布确认的官方文档指出

对于不可路由的消息,一旦交换验证消息不会路由到任何队列,代理将发出确认(返回一个空的队列列表)

这意味着您将获得发布确认,即使没有队列绑定到具有匹配路由键的交换。如果要确保消息至少发布到一个队列,则需要确保将强制标志设置trueBasicPublish

channel.BasicPublish(
    exchange: "my_exchange",
    routingKey:"routingkey",
    mandatory: true, // at least one queue
    basicProperties: null,
    body: new byte[0]
);

未提供强制时的默认值为false. 所以 Mike Hadlow 的回答并不是 100% 准确的。对此有一个未解决的问题RawRabbit,该问题将在下一个版本中发布。

于 2016-10-20T06:33:46.727 回答