BSr*_*vas 2 spring amqp rabbitmq spring-rabbit spring-amqp
我使用的是spring-rabbit1.1和RabbitMQ 3.3.1,
我的spring配置将在Rabbit MQ的RabbitTemplate的帮助下创建任何队列,但如果队列已经配置了x-dead-letter-exchange和x-message-ttl,它只会创建没有TTL和死信交换的队列.
对于Eg:以下队列将创建队列,但是没有创建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>
Run Code Online (Sandbox Code Playgroud)
所以我不得不从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>
Run Code Online (Sandbox Code Playgroud)
这假设您使用默认直接交换(按队列名称路由)路由原始邮件.因此,死信路由使用相同的路由密钥(队列名称).如果使用显式路由键进行路由,则可以使用它.
顺便说一下,RabbitTemplate不会声明这些元素,它就是RabbitAdmin实例.
| 归档时间: |
|
| 查看次数: |
3033 次 |
| 最近记录: |