https://github.com/OptimalBits/bull
bull自称是最快、最可靠、基于 Redis 的 Node.js 队列。为了坚如磐石的稳定性和原子性而精心编写。
所以我们来看一看怎么搞的
特性
-
采用无轮询设计,CPU 使用率降至最低。
-
基于Redis的稳健设计。 -- 所有工作数据存储在redis,大量使用了redis的原子操作特性
-
延迟工作。-- 使用定时器来更新延迟队列
-
根据 cron 规范安排和重复作业。
-
工作的速率限制器。 -- 使用 redis key 的expire和原子性来保证速率限制
-
重试。
-
优先级队列。
-
并发性。 -- 只提供本地队列的并发控制,无法控制不同工作线程的全局并发设置
-
暂停/恢复——全局或本地。
-
每个队列有多种作业类型。
-
线程化(沙盒)处理函数。
-
从进程崩溃中自动恢复。
现状
Bull 目前处于维护模式,仅修复错误。新功能在BullMQ里。
BullMQ同时还提供了BullMQ Pro商业版本,已经走上了赚钱的路子。
估计原来bull的功能也有很大的改进空间。bull项目的未来看起来也就那样了。