Skip to content

Instantly share code, notes, and snippets.

@qiulang
Last active November 16, 2018 15:09
Show Gist options
  • Save qiulang/fdb2830bf4bf3672e0b646e1ef14a89b to your computer and use it in GitHub Desktop.
Save qiulang/fdb2830bf4bf3672e0b646e1ef14a89b to your computer and use it in GitHub Desktop.

为什么选择bull queue

  1. 我们需要一个基于 redis的轻量级的job queue, 和这个SO问题完全一样: Background processes in Node.js "After a user posts something to an app I want to crunch the data, request additional data from external resources, etc. All of this is quite time consuming, so I want it out of the req/res loop. "

  2. google基本上只有三个结果 bee-queue , bullkue 。其他几个星值都太低了, 参见 bee-queue vs bull vs kue vs node-resque vs queue vs tiny-workervs webworker-threads 。基于其他message queue,比如RabbitMQ, Kafka, ActiveMQ 的实现同样不考虑(下面bee-queue同样提到这点)

  3. 一开始,选择的bee-queue,因为它最简单,附带的example 一看就懂(这点做得比bull好)这也是它自己强调的。 bee-queue有篇wiki, Bee Queue's Origin 提到它开始用bull,但因为性能达不到要求就自己开发 bee-queue

  4. bee-queue的官宣似乎也做得比bull好,很容易找到这两篇文章 Bee-Queue: a Redis-based distributed queueAnnouncing Bee-Queue v1.0 。我最开始的担心只是它的上一次更新10个月前,结果我就用了“常用把戏”,给它开个问题单,看它多久相应?果然,开了以后一直没响应;同样的问题开给bull,隔天就相应了。我们又进一步问了个问题,还是隔天就相应。Node.js job queue evaluation 这里说bull一个缺点是 'Sloooow issues resolution' 我们经验恰恰相反。所以对bull的好感一下大增。

  5. 但促使我们换bull另一个原因是,bee-queue好像没法暂停、取消一个job;而bull提供这样的方法。bull和bee的api很类似,所以直接换个queue代码基本不用改。

  6. Kue 的年代太久远,好像也最复杂,所以没考虑,只是知道它居然又是TJ大神写的,实在佩服得不行。这篇Procrastination like a boss with queues 搜索排名也较靠前,比较了kue & bull 实在有精力可以看看。

注:Does Node.js need a job queue? 倒是这得看下,queue有适用场景, 回答的人jfriend00的js的大拿

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment