【问题标题】:Does RabbitMQ guarantee the order in which published message confirmations are delivered back to the client?RabbitMQ 是否保证已发布消息确认返回给客户端的顺序?
【发布时间】:2017-03-08 18:59:22
【问题描述】:

对于已发送confirm.select 方法的发布者,RabbitMQ 代理documentation 的字面阅读表明客户端可能以不同于发布原始消息的顺序接收消息确认响应。

任何人都可以验证这确实是这种情况吗?还是消息总是按照收到的顺序进行确认?如果可以以不同的顺序接收消息确认,需要什么条件才能出现这种情况?

【问题讨论】:

  • 请注意,我对确认是消息确认还是确认不感兴趣,而只关心接收这些确认的顺序。

标签: rabbitmq rabbitmq-exchange


【解决方案1】:

谁能证实确实如此?

是的,可以按不同的顺序确认消息

需要满足什么条件?


确认的基本规则如下:

  • 在 basic.return 之后立即确认不可路由的强制消息或即时消息;
  • 否则,临时消息在入队时即被确认;
  • 持久消息在持久保存到磁盘或 当它被每个队列消耗时

所以,可能的原因可能是:

  1. 考虑持久性消息尚未持久化到磁盘但转发给消费者的情况。由于消息是以异步方式处理的,不同的消息可能会被消费者以不同的顺序确认,因此确认的顺序会相应地改变。
  2. TCP 问题。发布者发布的数据包不能保证以相同的顺序到达代理服务器。因此,发布者不能假定按照其发布的顺序接收它们。

【讨论】:

    猜你喜欢
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 2019-05-04
    • 1970-01-01
    相关资源
    最近更新 更多