We are building a Node.js service which will need asynchronous support for tasks like sending emails. Here's our evaluation:
- kue
- https://github.com/Automattic/kue
- Good: Seems well documented
- Good: Supports retries and backoff
- Good: Uses Redis so 1 less thing to maintain
- Bad: Only supports Redis so have to wary of key eviction at later stages of growth
- Bad: Slow to resolve issues
- http://isitmaintained.com/project/Automattic/kue
- Resolution time: 15 days, Open issues: 10%
- BUSMQ
- https://github.com/capriza/node-busmq
- Bad: Doesn't seem battle-tested enough (e.g. low stars, low issues, low PRs)
- Good: Fast issue resolution
- http://isitmaintained.com/project/capriza/node-busmq
- Resolution time: 22 hours, Open issues: 3%
- Bull
- https://github.com/OptimalBits/bull
- Good: Has UIs
- Really bad: Sloooow issues resolution
- http://isitmaintained.com/project/OptimalBits/bull
- Resolution time: 21 days, Open issues: 25%
- node-resque, port of Ruby's resque library
- https://github.com/taskrabbit/node-resque
- Good: Seems battle-tested (e.g. high issues, high PRs)
- Bad: Documentation isn't that straightforward but I think we need to run both a worker and a scheduler
- Good: Quick issue resolution
- http://isitmaintained.com/project/taskrabbit/node-resque
- Resolution time: 22 hours, Open issues: 5%
- We are skipping RabbitMQ and ZeroMQ research for now, focusing on Redis so we can reduce upfront DevOps workload
Probably going to go with kue
; it's had 500 issues and 200 PRs closed so it should be stable.
I'm not sure why but I don't want to settle on resque
. Let's call it personal stubborn-ness/caution for now.
Thanks for sharing. I don't know how much weight I'd place on Issues/resolution as checking some of them today and some differ significantly from when you checked, also more popular solutions mostly likely will surface more issues. My admittedly superficial review also points to bull