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.
why did you stopped your research with zeroMQ ?