handle delay task with redis
2018年5月28日
用Redis实现延迟队列
思路
生产者发送一个定时任务到sorted set队列,score为未来的执行时间;这样队列第一个数据就是最近要执行的(消费)的任务
消费者定时(一个很短的时间间隔)去队列取出第一个任务,看是否到执行时间(score), 如果到了就执行任务,并将这个任务从队列删掉。
实现
任务
1 | // DTask the delay task |
生产者
1 | // Producer is delay task producer |
消费者
1 | // Consumer is the consumer interface |
发送任务
1 | // ProduceTask create a delay task(redis sorted set) |
消费任务
1 | // Consume default consume the delay task |