Concurrency 理解未确认的消息请求顺序

Concurrency 理解未确认的消息请求顺序,concurrency,rabbitmq,messaging,amqp,Concurrency,Rabbitmq,Messaging,Amqp,首先,我引述以下案文: 当消息被重新调用时,它将被放置到其原始位置 如果可能的话,在它的队列中如果不是(由于同时交付和 当多个消费者共享一个服务时,来自其他消费者的确认 队列),消息将被重新引用到更靠近队列的位置 头部 现在想象一下,在同一个队列中有两条消息(A和B),它们都未被确认:当官方文件说“[…]靠近队列头”时,是否可以保证订购 消息A在任何情况下都会在B之前排队吗?对我来说答案是否定的,但我正在寻求建议。简短的答案是 如果A和B都重新申请,以及 A最初添加到B之前的队列中,并且 在A

首先,我引述以下案文:

当消息被重新调用时,它将被放置到其原始位置 如果可能的话,在它的队列中如果不是(由于同时交付和 当多个消费者共享一个服务时,来自其他消费者的确认 队列),消息将被重新引用到更靠近队列的位置 头部

现在想象一下,在同一个队列中有两条消息(A和B),它们都未被确认:当官方文件说“[…]靠近队列头”时,是否可以保证订购

消息A在任何情况下都会在B之前排队吗?对我来说答案是否定的,但我正在寻求建议。

简短的答案是

  • 如果A和B都重新申请,以及
  • A最初添加到B之前的队列中,并且
  • 在A重新排队和B重新排队之间,队列上没有活动的消费者
然后,在两个队列都重新排队后,A将始终放在队列中B的前面

请参阅。

可能的副本