Message Queues

Async communication, decoupling, and event-driven architectures

Message Queues

Message queues decouple producers from consumers, enabling async processing, load leveling, and fault tolerance. Key choices: RabbitMQ (traditional broker), Kafka (distributed log), SQS (AWS managed), and Redis Streams.

Queue-based Architecture

  • At-most-once: Message might be lost, never delivered twice (fire and forget)
  • At-least-once: Message always delivered, but may be duplicated (most common)
  • Exactly-once: Hard to achieve, often simulated via idempotency
  • Dead Letter Queue (DLQ): Store messages that fail processing after N retries
  • Back pressure: Slow down producers when consumers can't keep up