我计划通过以下两个链接link1 link2来延迟处理队列中的邮件。所以,正如链接中所建议的那样。我已使用x-dead-letter-exchange
和x-dead-letter-routing-key
args声明了原始队列。当消息未能被消费者处理或ttl发生或队列长度超过时,将消息发布到所谓的dead-letter-queue
。现在,dead-letter-queue
类似的args已与ttl
参数一起设置。假设在ttl
超过后将消息重新发布到原始队列。但问题是它丢弃了所有消息。
此外,这里有一个问题。如果我明确地将失败的消息从原始队列发布到死信队列。然后在ttl之后将消息重新发布到原始队列。为什么会这样,我如何使它工作。因此,死信队列将消息重新发布到原始队列而不是丢弃。我正在使用RabbitMQ 3.0.0
。
仅供参考,我创建了direct
类型的交换以及路由密钥
答案 0 :(得分:3)
当队列具有TTL设置时,意味着该队列中的消息将在TTL过期后发送到与该队列关联的死信交换(DLX)。如果队列没有分配DLX,则消息将进入位桶。
如果您想将邮件发送回重新处理的队列,那么您需要具有我在本文中描述的设置。
Dead-lettering dead-lettered messages in RabbitMQ
希望这对你有所帮助。