通过BLPOP阻塞,我们避免了频繁的去请求redis,并且更重要的是提高了实时性;
2.批量获取的数量和消费线程池的阻塞队列
执行上面的一次获取N个元素是不定的,这个要看线程池的maxPoolSize...的影响
如果redis集群用了codis方案或者Twemproxy方案; 他们不支持BLPOP的命令;
codis不支持的命令集合
那么就不能利用BLPOP来防止频繁请求redis;那么退而求其次改成每秒执行一次...,executorName,executor);
}
}
BLPOP阻塞的情况如何优雅停止监听redis的线程
如果不是在codis集群的环境下,BLPOP是可以很方便的阻塞线程的...不用BLPOP, 每次都sleep一秒去调用LrangeAndLTrim操作;
②.关机的时候杀掉 redis的blpop客户端; 杀掉之后 BLPOP会立马返回null; 进入下一个循环体;
---...-
不足
因为Redis的持久化特性,做不到消息完全不丢失,如果要保证完成不丢失,Redis的持久化刷盘策略要收紧
因为Codis不能使用BLPOP这种阻塞的形式,在获取消费任务的时候用了每秒一次去获取