rabbitmq实现延时消息主要有两种方式:
- 死信消息(队列ttl+死信exchange)
- 延时插件 (rabbitmq-delayed-message-exchange)
rabbitmq 实现方式一:队列ttl+死信exchange
简述:使用两个队列,一个队列接收消息不消费,等待指定时间后消息死亡,再由该队列绑定的死信exchange再次将其路由到另一个队列提供业务消费。
ttl 和 死信exchange 相关知识
ttl
先贴两个个rabbitmq官方文档:
- Time-To-Live and Expiration:https://www.rabbitmq.com/ttl.html
- Dead Letter Exchangeshttps:https://www.rabbitmq.com/dlx.html
我这里也简单介绍下:
rabbitmq 可以给 消息 和 队列 设置 ttl(生存时间)
- 队列设置:
x-message-ttl=60000
(队列中所有消息都只有60s存活时间) - 指定消息设置:
expire=60000
指定消息只有60s存活时间
如果队列和消息同时设置了ttl,则取较小的那个作为ttl。消息死亡后不会被消费者消费。
死信exchange
死信(