gpt4 book ai didi

Spring RabbitTemplate 未使用 TTL 创建死信队列

转载 作者:行者123 更新时间:2023-12-02 00:51:21 27 4
gpt4 key购买 nike

我正在使用 spring-rabbit1.1 和 RabbitMQ 3.3.1 ,

我的 spring 配置将在 Rabbit MQ 上的 RabbitTemplate 的帮助下创建任何队列,但如果队列已配置 x-dead-letter-exchange 和 x-message-ttl ,它只会创建没有 TTL 的队列,死信交换。

例如:下面的队列将创建队列,但不会创建 TTL 和死信交换。

<rabbit:queue name="hello.queue.dead">
<rabbit:queue-arguments>
<entry key="x-dead-letter-exchange" value="hello.activity-task.topic"/>
<entry key="x-message-ttl" value="10000"/>
</rabbit:queue-arguments>
</rabbit:queue>

因此,我必须从 Rabbit MQ 中删除队列,并手动创建所有必需的值才能使其正常工作。

如果有任何选项可以解决此问题,任何人都可以帮助我吗???

最佳答案

您必须显式声明队列和交换器...

<rabbit:queue name="q.with.dlx">
<rabbit:queue-arguments>
<entry key="x-dead-letter-exchange" value="dlx"/>
<entry key="x-message-ttl" value="10000" value-type="java.lang.Long"/>
</rabbit:queue-arguments>
</rabbit:queue>

<rabbit:queue name="dlq"/>

<rabbit:direct-exchange name="dlx">
<rabbit:bindings>
<rabbit:binding key="q.with.dlx" queue="dlq"/>
</rabbit:bindings>
</rabbit:direct-exchange>

这假设您使用默认的直接交换(按队列名称路由)路由原始消息。因此,死信路由使用相同的路由键(队列名称)。如果您使用显式路由键进行路由,则可以使用它。

顺便说一下,RabbitTemplate 没有声明这些元素,它是 RabbitAdmin 实例。

关于Spring RabbitTemplate 未使用 TTL 创建死信队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24858880/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com