Message Queue
A message queue enables asynchronous service-to-service communication. Messages are stored until the receiving service is ready to process them. This decouples sender from receiver, letting each operate independently.
How Message Queues Work
- A producer sends a message to the queue
- The queue stores the message durably
- A consumer reads and processes the message
- The message is acknowledged and removed from the queue
Popular Message Queue Systems
- Redis — In-memory data store often used as a lightweight message broker
- RabbitMQ — Feature-rich message broker supporting multiple protocols
- Apache Kafka — Distributed event streaming platform for high-throughput workloads
- Amazon SQS — Fully managed message queuing service
- BullMQ — Redis-based queue for Node.js (used by AsyncQueue)
Message Queues vs Task Queues
| Feature | Message Queue | Task Queue |
|---|---|---|
| Primary purpose | Message delivery | Work execution |
| Result tracking | No | Yes |
| Retry logic | Basic | Advanced (backoff, dead-letter) |
| Scheduling | No | Yes (cron, delays) |
| Dashboard | Varies | Yes |
When to Use a Message Queue
- Event-driven architectures where services communicate via events
- Fan-out patterns where one message triggers multiple consumers
- Log aggregation and stream processing
- Decoupling microservices for independent scaling