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.

Go deeper with CFSGPT

Get AI-powered deep-dives, save terms, and run advanced simulations — free account.

Create Free Account