我正在使用spring-rabbit1.1和RabbitMQ 3.3.1,
我的春季配置将在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
实例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句