GitHub 上比较流行的 Node.js 任务队列库有 Kue,Bull 和 Bee-queue。Kue 历史最早,2011 年第一次提交,不知道是不是历史包袱,现在还不支持 Promise,性能也相对一般。所以我第一个尝试了 Kue 之后就放弃了。
Bee-queue 最年轻,第一次提交是 2015 年,定位是一个轻量级的消息队列。Bee 的作者花了很多笔墨说明 Bee 与 Kue 和 Bull 的不同,以速度和轻量为主要特点,不追求复杂的功能。有兴趣可以了解一下:https://github.com/bee-queue/bee-queue#benchmarks。我试了之后觉得还是缺少一些需要的功能,所以也放弃了。
最后我就选择了 Bull,在现代化和功能上都能满足需求。NPM 上已经有作者发布了 egg-bull
,但好像维护得不是很积极,所以我又发布了一个 egg-bull-queue
,除了把 Bull 引入 Egg 之外,主要添加了 index.d.ts
。
要注意的是,@types/bull
虽然声明了 namespace Bull
,但是用了 export
,所以没法在全局上 merge namespace
,为了简单处理,需要用到 Queue
、Job
等 interface 的时候还是要 import * as Bull from 'bull'
。插件本身引入了 @types/bull
,需不需要独立安装,主要看你的 TSLint 允不允许导入未显式安装的库。
点赞