首页 > 解决方案 > Spring AMQP-我如何从 DLX 队列重试/重新排队消息到原始队列?

问题描述

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

交换 e1 -> 队列 q1

DLX 交换 e2 -> 队列 q2

我还提到了队列 q1 中的 DLE 和 DLK,然后消息在拒绝/失败/超时时移动到队列 q2。

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

标签: rabbitmqspring-amqp

解决方案


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

在这篇文章中查看更多信息:

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

推荐阅读