A message queue is a component that holds messages sent by one part of a system (the producer) until another part (the consumer) is ready to process them. Messages are typically delivered in order to one consumer, then removed after being acknowledged.
Why it matters
Queues decouple services. A web request can place a job such as sending an email or resizing an image on a queue and return immediately, while workers handle it in the background. If traffic spikes, the queue grows instead of the system failing, and if a consumer crashes, unacknowledged messages can be redelivered. Examples include RabbitMQ, Amazon SQS and Redis-based job queues.
Delivery is often at least once, so the same message can arrive twice and consumers should be designed for that.
Example
Producer: enqueue {"job":"send_receipt","order":981}
Worker A: receives, processes, acknowledges -> message removed
Worker B: crashes before acknowledging -> message becomes visible again
Common mistakes
- Assuming exactly-once delivery and not making handlers idempotent.
- Letting a poison message fail repeatedly instead of moving it to a dead-letter queue.
- Ignoring queue depth and age, the main signals that consumers are falling behind.
Related
Get notified when this term updates
Plus occasional practical tips on uptime and monitoring, nothing else. Unsubscribe anytime.
This page is general information written by our editorial team and updated when documentation changes. Servers and providers differ, so test changes safely first. See our editorial policy and disclaimer.