# Message queue articles

Source: https://imqueue.org/blog/topics/queue/

Articles on running Node.js services over a message queue: work queues, competing consumers, guaranteed delivery, back-pressure, and Redis as the broker.

13 articles tagged `queue`, newest first.

- [Graceful shutdown and zero-drop deploys](https://imqueue.org/blog/graceful-shutdown-zero-drop-deploys/) — 2026-07-28, Andrii Glushko: Every deploy sends a kill signal to a process that is probably in the middle of something. Nothing 500s, no dashboard turns red, and the work is gone anyway. Here's what actually happens to an in-flight message on SIGTERM, and the drain that keeps it. — [markdown](https://imqueue.org/blog/graceful-shutdown-zero-drop-deploys/index.md)
- [Delayed and scheduled work without adding a job system](https://imqueue.org/blog/scheduled-work-without-a-job-system/) — 2026-07-25, Mykhailo Stadnyk: "Send that email in 24 hours" usually turns into a second deployment, a second data model, and a job record shadowing a service method you already wrote. Often the message queue you already run can just do it. Here's how deferral works as a parameter, and what it costs. — [markdown](https://imqueue.org/blog/scheduled-work-without-a-job-system/index.md)
- [Auto-scaling Redis broker: with and without broadcast](https://imqueue.org/blog/horizontally-scalable-redis-broker/) — 2026-07-24, Serhiy Morenko: One Redis behind your message bus is a ceiling and a single point of failure. The promoter and unicaster modules turn a fleet of plain Redis instances into a horizontally auto-scaling broker — here are the recipes for networks that deliver broadcast and for clouds like GCP that don't. — [markdown](https://imqueue.org/blog/horizontally-scalable-redis-broker/index.md)
- [RPC over Redis in Node.js: patterns and pitfalls](https://imqueue.org/blog/rpc-over-redis-nodejs/) — 2026-07-23, Serhiy Morenko: How request/reply RPC over Redis actually works in Node.js — correlation, timeouts and at-least-once delivery, which of those @imqueue handles for you, and what it deliberately leaves to you: retrying a failed RPC call, coalescing duplicate concurrent calls with @lock, and the circuit breaker it does not ship. — [markdown](https://imqueue.org/blog/rpc-over-redis-nodejs/index.md)
- [BullMQ alternatives for Node.js: an honest 2026 guide](https://imqueue.org/blog/bullmq-alternatives/) — 2026-07-22, Mykhailo Stadnyk: BullMQ is the default Redis job queue for Node.js — but it isn't the only choice. Here's an even-handed map of the alternatives (Bee-Queue, pg-boss, Agenda, @imqueue/job and more), what each is actually good at, and how to pick. — [markdown](https://imqueue.org/blog/bullmq-alternatives/index.md)
- [RPC between Node.js microservices over a message queue](https://imqueue.org/blog/rpc-over-message-queue-nodejs/) — 2026-07-22, Mykhailo Stadnyk: Why route internal service-to-service calls through a message queue instead of HTTP or gRPC — and how @imqueue makes those calls fully typed with zero client boilerplate. — [markdown](https://imqueue.org/blog/rpc-over-message-queue-nodejs/index.md)
- [Load balancing microservices without a load balancer](https://imqueue.org/blog/load-balancing-microservices-without-a-load-balancer/) — 2026-07-14, Mykhailo Stadnyk: For internal service-to-service traffic, the load balancer you run and operate is often solving a problem a message queue solves for free. Here's the competing-consumers pattern, why pull beats push, and what you give up. — [markdown](https://imqueue.org/blog/load-balancing-microservices-without-a-load-balancer/index.md)
- [Do your Node.js back-ends really need service discovery?](https://imqueue.org/blog/do-nodejs-backends-need-service-discovery/) — 2026-07-12, Mykhailo Stadnyk: Consul, etcd, DNS-SD — service discovery is a lot of machinery to stand up. Sometimes you genuinely need it; often you don't. Here's how to tell, and how a queue makes the question disappear. — [markdown](https://imqueue.org/blog/do-nodejs-backends-need-service-discovery/index.md)
- [Back-pressure for Node.js services](https://imqueue.org/blog/backpressure-nodejs-services/) — 2026-07-09, Mykhailo Stadnyk: When a downstream service slows down, HTTP tends to turn that into a cascading failure. A queue absorbs the spike instead. Here's the difference, and the trade-offs to watch. — [markdown](https://imqueue.org/blog/backpressure-nodejs-services/index.md)
- [Guaranteed message delivery: cost and when to use it](https://imqueue.org/blog/guaranteed-message-delivery-cost/) — 2026-07-07, Mykhailo Stadnyk: "Will I lose messages if a worker dies?" is the right question — and the answer is a trade-off, not a yes/no. Here's how guaranteed delivery works, what it costs, and how to choose per workload. — [markdown](https://imqueue.org/blog/guaranteed-message-delivery-cost/index.md)
- [Redis as a message bus: patterns beyond pub/sub](https://imqueue.org/blog/redis-message-bus-patterns/) — 2026-06-22, Mykhailo Stadnyk: Most people know Redis pub/sub and stop there. Redis has richer primitives — lists, blocking pops, and streams — that make it a capable message bus. Here's a tour, and where each fits. — [markdown](https://imqueue.org/blog/redis-message-bus-patterns/index.md)
- [@imqueue/job vs BullMQ: Redis job queues compared](https://imqueue.org/blog/imqueue-vs-bullmq/) — 2026-06-12, Andrii Glushko: Both are Redis-backed job queues for Node.js. @imqueue/job is small, safe-by-default and scheduling-capable; BullMQ is the feature-rich one. Here's an honest split — plus the thing @imqueue does that BullMQ doesn't. — [markdown](https://imqueue.org/blog/imqueue-vs-bullmq/index.md)
- [Benchmarking @imqueue: throughput and delivery modes](https://imqueue.org/blog/benchmarking-imqueue-throughput/) — 2026-06-07, Mykhailo Stadnyk: Real measured throughput for @imqueue's message queue — ~200k msg/sec unreliable, ~120k guaranteed on a 24-core box — what the delivery modes cost, and a reproducible harness to measure the figures that matter: yours. — [markdown](https://imqueue.org/blog/benchmarking-imqueue-throughput/index.md)

## Other topics

- [Architecture](https://imqueue.org/blog/topics/architecture/) — 10 articles
- [Comparisons](https://imqueue.org/blog/topics/comparison/) — 9 articles
- [RPC](https://imqueue.org/blog/topics/rpc/) — 9 articles
- [Developer experience](https://imqueue.org/blog/topics/dx/) — 6 articles
- [Patterns](https://imqueue.org/blog/topics/patterns/) — 6 articles
- [Transports](https://imqueue.org/blog/topics/transport/) — 5 articles
- [Type safety](https://imqueue.org/blog/topics/types/) — 5 articles
- [Message delivery](https://imqueue.org/blog/topics/delivery/) — 4 articles
- [Resilience](https://imqueue.org/blog/topics/resilience/) — 4 articles
- [Typed clients](https://imqueue.org/blog/topics/clients/) — 3 articles
- [Jobs & scheduling](https://imqueue.org/blog/topics/jobs/) — 3 articles

All articles: [https://imqueue.org/blog/](https://imqueue.org/blog/) — [markdown](https://imqueue.org/blog/index.md)

