缺点: 每分钟全局扫表,浪费资源,有一分钟延迟
使用RabbitMq 实现 RabbitMq实现延迟队列
优点: 开源,现成的稳定的实现方案;
缺点: RabbitMq是一个消息中间件;延迟队列只是其中一个小功能...包下一个延迟队列,简单易用;拿来即用
缺点: 单机、不能持久化、宕机任务丢失等等;
基于Redis自研延迟队列
----
既然上面没有很好的解决方案,因为Redis的zset、list的特性,我们可以利用...: 是一个Hash_Table结构;里面存储了所有的延迟队列的信息;KV结构;K=TOPIC:ID V=CONENT; V由客户端传入的数据,消费的时候回传;
RD_ZSET_BUCKET: 延迟队列的有序集合...通过BLPOP阻塞,我们避免了频繁的去请求redis,并且更重要的是提高了实时性;
2.批量获取的数量和消费线程池的阻塞队列
执行上面的一次获取N个元素是不定的,这个要看线程池的maxPoolSize...、定时锁等应用, interrupt()方法是无法中断当前的线程的。