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



对于已发送confirm.select方法的发布者,对RabbitMQ经纪文档的字面读取表明,客户可以以与原始消息不同的顺序收到消息确认响应出版了。

任何人都可以验证情况确实如此吗?还是消息总是按照收到的顺序确认?如果可以按不同的顺序收到消息确认,则需要哪些条件?

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

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

这种情况需要什么条件?


确认的基本规则如下:

  • 在基本之后,确认不可用的强制性或直接消息。返回;
  • 否则,暂时消息被确认时被确认。
  • 当持续到磁盘或 在每个队列上消费

因此,可能的原因可能是:

  1. 考虑到持续消息尚未持续存在的情况,而是转发给消费者的情况。由于消息是以异步处理的处理,因此消费者可能会以不同的顺序进行不同的消息,因此确认的顺序将相应地改变。
  2. TCP问题。发布者发布的数据包不能保证以相同的顺序到达代理服务器。因此,出版商不能假定以与其发布的顺序相同的顺序接收。

最新更新