Why I reached for BullMQ over RabbitMQ for background jobs
When the Marketpal lead-distribution rewrite needed a queue, the team's instinct was RabbitMQ — proven, language-agnostic, has every feature ever invented. I pushed for BullMQ instead. The reasoning, in order of importance:
One language across producer + consumer.The whole platform is Node/TypeScript. RabbitMQ would've added a second runtime model (AMQP mental model) on top. BullMQ is just a Redis client with typed Job payloads — same TS types flow end to end.
Redis was already there.We had Redis for caching and session state. Adding RabbitMQ meant a new server, new ops surface, new monitoring. BullMQ piggybacks on what's already in production.
Trade-off I accepted: BullMQ is less robust under network partition than RabbitMQ. For our throughput (≤ 200 jobs/min, no cross-region requirements), the simplicity won.