延迟队列
March 20, 2023About 1 min
延迟队列
https://blog.csdn.net/m0_56079407/article/details/125858748
实现方式
- 基于死信:在队列里面,通过 ttl
- 基于插件:在交换机里面
应用场景
- 订单在十分钟之内未支付则自动取消
- 新创建的店铺,如果在十天内都没有上传过商品,则自动发送消息提醒。
- 用户注册成功后,如果三天内没有登陆则进行短信提醒。
- 用户发起退款,如果三天内没有得到收处理则通知相关运营人员。
- 预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会议
轮训和定时任务的缺点
- 数据量小:可以采用每秒轮训实现上述功能(数据量大时导致轮训瞬间处理太多)
- 对时间要求不严格:那么可以每天凌晨跑定时任务来实现(例如生成一些日报)
对于大数据量、时效性强的场景,需要用到延迟队列
延迟队列的优点
- 延迟功能有保障(时间要求严格)
- 不会像轮训一样一瞬间处理太多
基于死信
缺点:
- 注意:由于队列的先进先出特性,只有当过期的消息到了队列的顶端(队首),才会被真正的丢弃或者进入死信队列。
- 如果遇到不同的任务类型需要不同的延时的话,需要为每一种不同延迟时间的消息建立单独的消息队列。
基于插件
x-delayed-message 延迟插件