【问题标题】:Enqueue acknowledgements with EasyNetQ使用 EasyNetQ 将确认入队
【发布时间】:2016-10-20 14:33:46
【问题描述】:

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

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

【问题讨论】:

    标签: rabbitmq easynetq


    【解决方案1】:

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

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

    【讨论】:

    【解决方案2】:

    官方documentation on Publish Confirm表示

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

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

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

    未提供强制时的默认值为false。所以 Mike Hadlow 的回答并不是 100% 准确的。 RawRabbit 有一个 open issue 与此相关,这将在下一个版本中到期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 2020-03-11
      相关资源
      最近更新 更多