我正在研究一个能够从兔子对待消息的工人。
但是,我不确定如何完成此操作。
如果我收到一条消息,并且在处理错误期间,如何将消息放入队列的末尾?
我正在尝试使用nack或拒绝,但是该消息总是在第一个位置重新计算,而其他消息则保持冷冻!
我不明白为什么必须将消息放在第一个位置,我正在尝试使用其他选项"播放"诸如requeue或allupto之类的选项,但它们似乎都没有用。
预先感谢您!
文档说:
可以使用具有RECEREUE参数的AMQP方法返回队列(BASIC.RECOVER,BASIC,REMEXT和 basic.nack),或由于通道关闭而在未经批准的情况下关闭 消息。这些场景中的任何一个导致消息在 兔子的队列的后部释放早于2.7.0。从 RABBITMQ版本2.7.0,始终保存在队列中 出版令,即使在有必要或渠道的存在下 闭合。
以版本2.7.0及以后的个人 如果队列有多个 订户。这是由于其他订户的行为 要求消息。从队列的角度来看,消息是 始终按出版顺序举行。
请记住ack
您的成功消息,否则不会从队列中删除它们。
如果您需要对被拒绝的消息进行更多控制
nack或拒绝丢弃消息或重新标语。
符合您的要求可能是合适的,
一旦消费者收到消息,就在开始处理消息之前,请将ack()发送回兔子服务器。
处理消息然后处理该消息,如果在过程中找到任何错误,则将(发布)相同的消息发送到同一队列中。这将把消息放在队列的背面。
成功处理无所作为。ACK()已经发送到RabbitMQ服务器。只需获取下一条消息并处理它。