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後即可獲取到消息。