A message queue holds messages between producers and consumers. Producers publish; consumers process asynchronously. This decouples services, buffers load, and enables at-least-once or exactly-once processing with retries and ordering guarantees (depending on the system).
| System | Model | Typical use |
|---|---|---|
| Kafka | Log/topic; consumers read offset; retention | Event streaming, high throughput, replay |
| RabbitMQ | Queues, exchanges, routing | Task queues, RPC, flexible routing |
| SQS | FIFO or standard queue; pull | AWS-native, decouple components, serverless |
Use a queue when you need async processing, load leveling, or decoupling. Choose Kafka for event log and replay; RabbitMQ for flexible routing and task queues; SQS for simple, managed queues on AWS.