了解未应用的消息重新排队顺序

时间:2018-01-30 12:04:27

标签: concurrency rabbitmq messaging amqp

首先,我引用RabbitMQ docs中的以下文字:

  

当邮件重新排队时,它将被置于其原始位置   如果可能的话,在队列中。 如果不是(由于同时交付和   当多个消费者共享时,来自其他消费者的确认   队列),消息将被重新排队到更接近队列的位置   头

现在假设在同一个队列中有两条消息(A和B),两者都是 unacked :官方文档说“[...]离队列头更近”给出任何保证订购?

在任何情况下,消息A会在B之前排队吗?对我来说答案是没有,但我正在寻找建议。

1 个答案:

答案 0 :(得分:2)

简短的回答是

  • 如果A和B都被重新排队,
  • A最初被添加到B之前的队列中,并且
  • 在A被重新排队并且B被重新排队之间,队列中没有活跃的消费者,

然后在重新排队后,将总是放在队列中的B之前。

请参阅my answer here for explanation as to why these assumptions are necessary