我希望接收到消息实际上已被放置在队列中的异步确认。我已经搜索了相当多的内容,并且尝试过各种使用EasyNetQ的PublishAsync进行确认的方法,但是似乎找不到Bus连接配置和代码组合,这会给我这样的确认。
也许PublishAsync不是实现这一目标的方法,而且我忽略了EasyNetQ API中的其他一些东西?还有其他人有用EasyNetQ实现这个场景的经验吗?
发布于 2014-10-30 20:44:25
对于这种保证,您需要打开publisher确认。见文件:
https://github.com/mikehadlow/EasyNetQ/wiki/Publisher-Confirms
发布于 2016-10-20 06:33:46
官方的发布文件确认说
对于不可路由的消息,一旦exchange验证消息不会路由到任何队列(返回队列的空列表),代理将发出确认消息。
这意味着您将得到发布确认,即使没有队列绑定到具有匹配路由密钥的exchange。如果要确保消息至少发布到一个队列,则需要确保强制标志在true中设置为BasicPublish。
channel.BasicPublish(
exchange: "my_exchange",
routingKey:"routingkey",
mandatory: true, // at least one queue
basicProperties: null,
body: new byte[0]
);不提供强制时的默认值是false。所以Mike的答案并不是百分之百准确。关于这一点,有一个公开发行用于RawRabbit,这将在下一个版本中完成。
https://stackoverflow.com/questions/26537936
复制相似问题