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:
- 创建死信交换,就是一个特殊名称的普通交换
- 创建一个retry_message队列并将所有消息发布到此处的死信交换路由
- 当你设置retry_message队列时,一定要默认队列的以下参数值
- x-message-ttl: 30000 – 这将为发布到队列的任何消息设置一个 ttl。当ttl过期时,消息将被重新发布到
x-dead-letter-exchange
参数中指定的exchange。
- x-dead-letter-exchange: original_exchange_name – 这是消息 ttl 过期后消息将重新发布到的位置。我们通常希望这是最初发布消息的交易所的名称。
我正在尝试在我的应用程序中实现以下场景
交换 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:
- 创建死信交换,就是一个特殊名称的普通交换
- 创建一个retry_message队列并将所有消息发布到此处的死信交换路由
- 当你设置retry_message队列时,一定要默认队列的以下参数值
- x-message-ttl: 30000 – 这将为发布到队列的任何消息设置一个 ttl。当ttl过期时,消息将被重新发布到
x-dead-letter-exchange
参数中指定的exchange。 - x-dead-letter-exchange: original_exchange_name – 这是消息 ttl 过期后消息将重新发布到的位置。我们通常希望这是最初发布消息的交易所的名称。