数据库轮循
原理:定时间隔一定时间查询数据库,获取即将到期的任务执行
缺点:时效性差(间隔指定时间查询,难以做到准时)、任务量大会有风险(比如某次数据量过大,可能这个间隔时间都没执行完下次又执行了)
redis+数据库
redis分成delay queue和ready queue两块, server会查询快到期的delay queue中的任务放到ready queue中,然后执行
delay queue;使用zset键值对存储,key存时间 value存消息指定的索引
ready queue:使用list存储,只存储索引
缺点:
RocketMq
RocketMq原生的延时方案只支持18个level的延时,
producer发送消息给commit log,正常消息放正常队列直接被消费即可,
如果是延时消息会被放到延时消息队列,延时队列根据时间间隔分为18个level,到期后会被放到queue等待执行
标签:方案,队列,queue,delay,延时,ready,执行 From: https://www.cnblogs.com/zhougongjin/p/17012046.html