...
|
...
|
@@ -47,14 +47,9 @@ public interface YhMessageConsumer { |
|
|
这里也可以让YhMessageConsumer实现MessageListener接口作为消息处理监听者。
|
|
|
6. 创建队列
|
|
|
|
|
|
|
|
|
6.1. 创建queue name:yoho:模块名:getMessageTopic
|
|
|
|
|
|
|
|
|
6.2. 绑定queue<----->amq.topic<------>getMessageTopic
|
|
|
|
|
|
|
|
|
6.3. 返回队列名new_queue
|
|
|
1. 创建queue name:yoho:模块名:getMessageTopic
|
|
|
2. 绑定queue<----->amq.topic<------>getMessageTopic
|
|
|
3. 返回队列名new_queue
|
|
|
7. listenerContainer设置监听队列名new_queue
|
|
|
8. 启动listenerContainer
|
|
|
|
...
|
...
|
@@ -68,9 +63,15 @@ Rabbit MQ通过TTL与DLX可以实现延时消息队列。 |
|
|
设置队列为TTL主要通过设置队列属性**x-message-ttl**,单位为ms。
|
|
|
TTl队列内的消息在到达ttl时间时就过期成为一个deadMsg。利用DLX,MQ可以将deadMsg再次进行转发,转发到哪呢,可以通过设置**x-dead-letter-exchange**来指定deadMsg转发到这个exchange,yoho-core中使用*yoho.expire*来接收deadMsg。
|
|
|
还可以通过设置**x-dead-letter-routing-key**来指定deadMsg过期后转发使用的routing-key,yoho-core并没有使用这个属性,因此deadMsg超时后转发时使用原来这个消息发送时的routing-key。
|
|
|
######**x-message-ttl** : 队列超时时间
|
|
|
######**x-dead-letter-exchange** :超时消息被丢弃到这里
|
|
|
######**x-dead-letter-routing-key** : 超时消息被丢弃时使用的routing-key
|
|
|
|
|
|
|
|
|
######**x-message-ttl** : 队列超时时间
|
|
|
|
|
|
|
|
|
######**x-dead-letter-exchange** :超时消息被丢弃到这里
|
|
|
|
|
|
|
|
|
######**x-dead-letter-routing-key** : 超时消息被丢弃时使用的routing-key
|
|
|
<br>然后我们需要创建一个队列(final_queue)专门来接收这些deadMsg,队列需要绑定到x-dead-letter-exchange,如果有x-dead-letter-routing-key的话通过其绑定,如果未设置x-dead-letter-routing-key,则通过原来的routing-key进行绑定。<br>
|
|
|
最后延时消息的消费者通过绑定final_queue队列,达成消息的延时处理。
|
|
|
|
...
|
...
|
|