A Redis Job Queue Was Enough
We almost reached for Kafka. Then we counted our jobs per second and put BullMQ on Redis instead. Two years later, here is why we have not regretted it.
We almost reached for Kafka. Then we counted our jobs per second and put BullMQ on Redis instead. Two years later, here is why we have not regretted it.
The order in which you commit a row and publish a real-time event determines whether your UI and your database can ever disagree. Always write first.
Postgres tops out at a few hundred concurrent connections. Workers and serverless handlers want thousands. Transaction-mode pooling is the cheap fix — and a small set of constraints you have to live with.