# MQ和定时任务
MQ和定时任务的选择
# 1. 特点
电商网站中通常会有这样的需求,订单创建后,会给用户两小时用于支付,如果超时未支付,则要自动取消订单。最容易想到的实现思路就是用定时任务的方式,每分钟(或者更短的时间)在数据库中查询一次未支付的订单,检查距离订单创建是否超过两小时,如果超过,则把订单取消。这种方式在数据库繁忙时会增加数据库的压力,我们可以使用 MQ 更优雅的实现这个需求
# 1.1. 异步处理
⽐如用户注册、下单事件
# 1.2. 应⽤解耦
不管定时任务作业还是 MQ 都可以作为两个应⽤之间的⻮轮实现应⽤解耦,这个⻮轮可以中转数据
# 1.3. 流量削峰
双⼗⼀的时候,任务作业和 MQ 都可以⽤来扛流量,后端系统根据服务能⼒定时处理订单或者从 MQ 抓取订单抓取到⼀个订单到来事件的话触发处理,对于前端⽤户来说看到的结果是已经下单成功了,下单是不受任何影响的
# 2. 总结
- 定时任务是时间驱动,⽽ MQ 是事件驱动
- 时间驱动是不可代替的,⽐如⾦融系统每⽇的利息结算,不是说消息来⼀条就算⼀下,⽽往往是通过定时任务批量计算
- 定时任务作业更倾向于批处理,MQ 倾向于逐条处理
参考
← MQ了解对比选型 RabbitMQ安装 →