场景:
比如未支付订单,超时一定时间后,系统自动取消订单并释放占有物品。
常用解决方案:
spring的schedule定时任务轮询数据库
缺点:
小号系统内存、增加数据库压力、存在较大的时间差
解决:
rabbitmq的消息TTL和死信Exchange结合
延时队列场景
定时任务的时效性问题
1、消息的TTL(Time To Live)- 消息的TTL就是消息的存活时间。
- RabbitMQ可以对队列和消息分别设置TTL.
- 对队列设置就是队列没有消费者连着的保留时间,也可以对每一个单独的消息做单独的设置。超过了这个时间,我们认为这个消息就死了,称之为死信。
- 如



