Message Queue

Message Queues are asynchronous communication middleware that decouple producers (senders) from consumers (receivers) using persistent or transient queues — enabling parallel processing, load leveling, and fault tolerance by allowing components to operate at different speeds without blocking each other, forming the backbone of distributed system architectures.

Core Concepts

  • Producer: Sends messages to the queue.
  • Queue/Topic: Buffer that stores messages until consumed.
  • Consumer: Reads and processes messages from the queue.
  • Broker: Server that manages queues and routes messages.

Message Queue vs. Direct Communication

AspectDirect (RPC/HTTP)Message Queue
CouplingTight (caller waits)Loose (fire and forget)
Failure handlingCaller must retryQueue retains message
Speed mismatchCaller blocked by slow receiverQueue buffers overflow
Scalability1:1 or load balanced1:N fan-out, N:1 fan-in

Popular Systems

SystemTypeThroughputLatencyPersistence
Apache KafkaDistributed logMillions msg/sec2-10 msPersistent (disk)
RabbitMQTraditional broker100K msg/sec< 1 msOptional
Redis StreamsIn-memory logMillions msg/sec< 0.5 msAOF/RDB
Amazon SQSManaged queueUnlimited (scaled)1-10 msPersistent
ZeroMQBrokerless libraryMillions msg/sec< 0.1 msNone
NATSCloud-nativeMillions msg/sec< 1 msJetStream

Patterns for Parallel Processing

Work Queue (Competing Consumers)
- Multiple consumers pull from same queue → parallel processing.
- Load automatically balanced — faster consumers process more messages.
- Example: 100 image resize tasks queued → 10 workers process in parallel.

Fan-Out (Pub/Sub)
- Producer publishes to topic → all subscribers receive a copy.
- Example: New user signup → email service, analytics service, CRM all notified.

Request-Reply
- Producer sends request with reply-to queue → consumer sends result to reply queue.
- Enables async RPC with queue-based routing.

Delivery Guarantees

LevelMeaningImplementation
At-most-onceMay lose messagesFire and forget
At-least-onceMay duplicate messagesAck + retry
Exactly-onceNo loss, no duplicatesTransactional (Kafka)

Message queues are essential infrastructure for building reliable, scalable distributed systems — by decoupling components and buffering communication, they enable parallel processing at scale while providing fault tolerance that synchronous communication cannot offer.

Take message queue further

Ask the copilot about this term, or have our engineers assess it against your process.