Spring AMQP- 我如何 retry/re-queue 从 DLX 队列到原始队列的消息?

Spring AMQP- How does i retry/re-queue message from DLX queue to original queue?

我正在尝试在我的应用程序中实现以下场景

交换 e1 -> 队列 q1

DLX 交换 e2 -> 队列 q2

我还提到了 queue-q1 中的 DLE 和 DLK,然后消息在 rejection/failure/timeout 上移动到 queue-q2。

但是我如何 resend/retry 将消息从 queue-q2 发送到原始 queue-q1?

在一些分析和过滤逻辑之后,您可以在您的应用程序中手动执行此操作。或者你可以在 queue-q2 上做一些 TTL 让未消费的消息过期。并且您还需要在此队列中指定一个 x-dead-letter-exchange 作为 Exachange e1 的名称以进行所需的回收。

查看更多信息 yin this article:

  1. 创建死信交换,就是一个特殊名称的普通交换
  2. 创建一个retry_message队列并将所有消息发布到此处的死信交换路由
  3. 当你设置retry_message队列时,一定要默认队列的以下参数值
  4. x-message-ttl: 30000 – 这将为发布到队列的任何消息设置一个 ttl。当ttl过期时,消息将被重新发布到x-dead-letter-exchange参数中指定的exchange。
  5. x-dead-letter-exchange: original_exchange_name – 这是消息 ttl 过期后消息将重新发布到的位置。我们通常希望这是最初发布消息的交易所的名称。