RabbitMQ是否保证将已发布的消息确认传递回客户端的顺序?

RabbitMQ是否保证将已发布的消息确认传递回客户端的顺序?,rabbitmq,rabbitmq-exchange,Rabbitmq,Rabbitmq Exchange,对于已发送confirm.select方法的发布者,RabbitMQ代理的文字读数表明,客户端可能会以不同于原始消息发布顺序的顺序接收消息确认响应 有人能证实事实确实如此吗?还是消息总是按照收到的顺序确认?如果可以以不同的顺序接收消息确认,则需要什么条件才能实现这种情况 有人能证实事实确实如此吗 是的,可以按不同的顺序确认消息 这种情况需要什么条件 确认的基本规则如下: 在basic.return之后立即确认不可路由的强制或即时消息 否则,瞬时消息在排队时即被确认 持久消息在持久化到磁盘或磁

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

有人能证实事实确实如此吗?还是消息总是按照收到的顺序确认?如果可以以不同的顺序接收消息确认,则需要什么条件才能实现这种情况

有人能证实事实确实如此吗

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

这种情况需要什么条件


确认的基本规则如下:

  • 在basic.return之后立即确认不可路由的强制或即时消息
  • 否则,瞬时消息在排队时即被确认
  • 持久消息在持久化到磁盘或磁盘时得到确认 在每个队列上使用时
因此,可能的原因可能是:

  • 考虑这样一种情况,即持久消息尚未持久化到光盘,而是转发给使用者。由于消息以异步方式处理,不同的消息可能由使用者以不同的顺序确认,因此确认的顺序将相应地改变
  • TCP问题。发布者发布的数据包不保证以相同的顺序到达代理服务器。因此,publisher不能假定接收它们的顺序与其发布的顺序相同

  • 请注意,我对确认是消息确认还是NACK不感兴趣,只对它们的接收顺序感兴趣。