【问题标题】:Rabbitmq problem with requeue expired messages重新排队过期消息的 Rabbitmq 问题
【发布时间】:2019-07-18 04:38:18
【问题描述】:

我创建了两个交换 WORKER 和 RETRY。我将 DLX 设置为将过期或拒绝的消息重新发送到原始队列,但我的消息在 RETRY 队列中消失了。问题是过期消息不属于work.exchange。但是被拒绝的消息运行良好。 请帮忙。你能给我一些解释和解决方案吗?

这个 retry.queue 的配置

work.queue 的配置

【问题讨论】:

  • 您需要显示您的队列和 DLQ 定义及其绑定。
  • 我和link一样做了
  • 被拒绝的消息运行良好,但过期的消息在 RETRY 队列中消失。
  • 您可能会声称您这样做了,但您需要准确显示您的配置是什么样的。我可以向您保证,该模式在正确配置时可以正常工作。
  • 问题是过期消息没有落入work.exchange。但是被拒绝的消息运行良好。

标签: rabbitmq spring-amqp


【解决方案1】:

问题是过期消息不属于work.exchange。但是被拒绝的消息运行良好。

你应该在你原来的问题中解释过。

您不得创建到期周期;只拒绝然后过期。

the documentation

有可能形成消息死信的循环。例如,当队列死信消息发送到默认交换时,可能会发生这种情况而没有指定死信路由键。此类循环中的消息(即两次到达同一队列的消息)如果在整个循环中没有被拒绝,则将被丢弃。

【讨论】:

  • 您可以使用 3 个队列和第三个队列上的 alwaysRejectConsumer 来实现您想要的。 Q1 到期。 Q2 到期 Q3 拒绝并 dlq 到 Q1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 2014-10-03
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
相关资源
最近更新 更多