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:
1 |
|
(该exchange与Routing key与设置死信队列x-dead-letter-exchange、x-dead-letter-routing-key 保持一致)
2、代码中使用
rabbitmq中配置好延迟队列delay.queue后,代码中将消息推送至delay.queue,5s后,消息会推送至
绑定如下exchange的队列
1 |
|
即test.queue, 监听test.queue,5s后即可获取到消息。
RabbitMQ利用死信队列实现延时队列
https://river106.cn/posts/3ed6cb3b.html