如何将消息放入MQRabbit队列末尾

问题描述 投票:0回答:2

我正在开发一个能够处理来自 RabbitMQ 的消息的工作程序。

但是,我不确定如何实现这一点。

如果我收到一条消息,并且在处理过程中发生错误,如何将消息放入队列末尾?

我尝试使用nack或reject,但消息总是被重新放在第一个位置,而其他消息保持冻结状态!

我不明白为什么消息必须放在第一个位置,我试图“玩”其他选项,如 requeue 或 AllupTo,但它们似乎都不起作用。

提前谢谢您!

node.js rabbitmq node-amqp
2个回答
1
投票

文档说:

可以使用具有重新排队参数(basic.recover、basic.reject 和 basic.nack),或者由于通道关闭而未确认 消息。任何这些情况都会导致消息在 对于 2.7.0 之前的 RabbitMQ 版本,排在队列后面。从 RabbitMQ 版本 2.7.0,消息始终保存在队列中 发布顺序,即使存在重新排队或通道 关闭。

在 2.7.0 及更高版本中,个人仍然可以 如果队列有多个,消费者观察无序的消息 订户。这是由于其他订阅者的行为造成的,他们可能 重新排队消息。从队列的角度来看,消息是 始终按出版顺序排列。

记得

ack
您成功的消息,否则它们不会从队列中删除。

如果您需要更多地控制被拒绝的消息,您应该查看死信交换


-4
投票

RabbitMQ 始终尝试保持消息的发布顺序。

如果你想把从消费者那里收到的消息放在队列的后面, 将ack()发送回rabbitmq服务器,RabbitMQ将删除正在等待确认的现有消息。将消息数据发送到同一个队列,它将被放入队列的后面。

© www.soinside.com 2019 - 2024. All rights reserved.