延迟任务

[研究背景]

: 下单之后如果三十分钟之内没有付款就自动取消订单。
: 定时任务的调度, 当天某些需要处理的数据

[当前处理方式]

定期轮训数据库

优点:实现简单
缺点:数据量过大时会消耗太多的IO资源,效率太低

[思路]

  1. swoole定时器
  2. 利用rabbitMQ的TTL机制

[实践]

swoole

ps: 本来是想解决 lumen秒级系统定时任务来了解的(lumen秒级定时 可以写一个互斥+sleep实现 但觉得low 好了好了 回归正题)

a simple demo

延迟/定时 demo

就....我不会swoole鸭

rabbitMQ理论验证

Dead Letter Exchange

在队列上指定一个死信交换机,当在该队列上发生:
1.消息被拒绝
2.消息过期而被删除(TTL)
3.消息数量超过队列最大限制而被删除
4.消息总大小超过队列最大限制而被删除
上边的抄来的~~~~~~ 我们来看TTL就好了


就这么个意思

咱先来个交换机


就是个普通的交换机

搞一个死信queue

我们之前创建的交换机 作为DLX (但要注意 in the same virtual host)


设置DLX

我又创建了一个普通queue 作为死信消息的载体queue

next...
绑定一哈~

好啦 我们可以验收成果了 请看演示.......

你可能感兴趣的:(延迟任务)