RabbitMQ 使用死信队列实现延时队列
参考?:
使用场景
- 订单下单30分钟后,如果用户没有付款,则系统自动取消订单(方案一)。
- 会议开始前10分钟,推送消息提醒用户(方案二)。
- 自定义某个操作的执行时间,如果设置文章在明早9点发布(方案二)。
优势
-
替代轮询。
若数据库数据量大,则定时轮询就会特别消耗资源,拖垮服务器,且响应慢。
实现方案
rabbitmq有两种方式实现延时队列。(第二种方式会在另一篇文章写,这篇文章只写第一种方式)
方案一:是通过设置队列的Dead Letter Exchanes和队列或消息的TTL。
方案二:是通过rabbitmq_delayed_message_exchange插件。