RabbitMQ是否保证将已发布的消息确认交付给客户的顺序?

时间:2017-03-08 18:59:23

标签: rabbitmq rabbitmq-exchange

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

任何人都可以验证确实如此吗?或者是否始终按照收到的顺序确认邮件?如果可以以不同的顺序接收消息确认,那么情况需要什么条件?

1 个答案:

答案 0 :(得分:0)

  

任何人都可以验证确实如此吗?

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

  

这种情况需要什么条件?

           

确认的基本规则如下:

     
      
  • 在basic.return之后立即确认不可路由的强制或立即消息;
  •   
  • 否则,瞬间消息在入队时确认;
  •   
  • 持久性消息在持久保存到磁盘或确认时确认   在每个队列上消费时
  •   

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

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