Return 消息到 rabbitmq 队列的末尾

Return message to the end of queue in rabbitmq

我有交换和队列。生产者不需要消费确认,但在某些情况下,由于缺少其他数据,消息可能无法在当前时刻被消费者处理。因此,我想 return 那些消息到队列的末尾。这该怎么做?或者当我拒绝消息时它会自动完成吗?

流量:

因此存在消息排序问题,在一般情况下,我按顺序接收消息,因为大多数组件都正确地传递了它们的消息。我想解决潜在的情况,当 Message1 的生产者由于负载过重或其他原因无法立即交换消息时。在这种情况下,Message2 将首先被消费,但数据库中没有足够的信息来处理它。我希望将此消息 return 编辑回队列,但要确保此 Message2 将转到队列的尾部。如果它会走到头,如果我只使用一个队列,我将得到无限循环。

附带的问题是,是否可以跟踪消费者尝试处理消息但 return 编辑了多少次。如果有可能像我之前描述的那样将消息放入队列的尾部,但由于某种原因 Message1 的 Producer 死了,并且不会有 Message1,我想在重试一些次数或一段时间后让 Message2 死掉。

RabbitMQ 总是将拒绝的消息放在 queue 的头部。要将它们放在尾部,您必须自己发布它们(例如使用 RabbitTemplate)。您可以添加带有重试次数的 header。