Spring AMQP-如何将消息从DLX队列重试/重新排队到原始队列?

时间:2018-10-09 12:43:51

标签: rabbitmq spring-amqp

我正在尝试在我的应用程序中实现以下方案

交换e1->队列q1

DLX交换e2->队列q2

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

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

1 个答案:

答案 0 :(得分:0)

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

查看此article中的更多信息:

  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过期后将消息重新发布到的位置。通常,我们希望这是消息最初发布所在的交易所的名称。