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
2
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的队列

1
2
exchange: delay.topic 
Routing key: routingkey.delay

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


RabbitMQ利用死信队列实现延时队列
https://river106.cn/posts/3ed6cb3b.html
作者
river106
发布于
2020年2月1日
许可协议