RabbitMQ利用死信队列实现延时队列

RabbitMQ本身没有直接支持延迟队列的功能,但是可以通过配置死信队列和设置消息或队列的过期时间来模拟出延迟队列的功能。

RabbitMQ安装见博文:RabbitMQ安装及简单使用

 

1、rabbitmq控制台配置

在rabbitmq 控制台,新建exchange:delay.topic

Type:topic

 

新建死信(延迟)队列:delay.queue

配置Arguments如下:

x-message-ttl: 50000 Number 延迟5s
x-dead-letter-exchange: delay.topic String 死信exchange,延迟设定时间后,会将消息推送到该exchange
x-dead-letter-routing-key: routingkey.delay String

死信routingkey

 

再新建队列 test.queue,

队列建好后,进入该队列,绑定如下exchange:

From exchange: delay.topic

Routing key: routingkey.delay

(该exchange与Routing key与设置死信队列x-dead-letter-exchange、x-dead-letter-routing-key 保持一致)

 

2、代码中使用

rabbitmq中配置好延迟队列delay.queue后,代码中将消息推送至delay.queue,5s后,消息会推送至

绑定如下exchange的队列

exchange: delay.topic   Routing key: routingkey.delay

即test.queue, 监听test.queue,5s后即可获取到消息。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章