RabbitMQ 使用插件实现延时队列
参考?:https://github.com/rabbitmq/rabbitmq-delayed-message-exchange
使用场景
- 订单下单30分钟后,如果用户没有付款,则系统自动取消订单。
- 会议开始前10分钟,推送消息提醒用户。
- 自定义某个操作的执行时间,如果设置文章在明早9点发布。
优势
-
替代轮询。
若数据库数据量大,则定时轮询就会特别消耗资源,拖垮服务器,且响应慢。
实现方案
rabbitmq有两种方式实现延时队列。(第一种方式在同级目录下,这篇文章只写第二种方式)
方案一:是通过设置队列的Dead Letter Exchanes和队列或消息的TTL。
方案二:是通过rabbitmq_delayed_message_exchange插件。
概要
- 新增type为x-delayed-message的exchange,必须配置x-delayed-type: topic/direct/fanout。
- 新增队列queue1, 绑定exchange和routingkey(rountingkey根据自己