๐Ÿ“ฌ

Message Queue

Asynchronous Task Processing via Queue

Unlike Pub/Sub, Message Queue delivers messages to exactly one consumer (point-to-point). The queue acts as a buffer to absorb processing speed differences between producers and consumers, and messages are preserved in the queue even if the consumer goes down.

Architecture Diagram

๐Ÿ“
Producer
Message Producer
โ‘  enqueue
๐Ÿ“ฌ
Message Queue
msg3 msg2 msg1
FIFO →
โ‘ก dequeue
โš™๏ธ
Consumer A
โ‘ข Process + ACK
โš™๏ธ
Consumer B
Waiting
Point-to-Point: Each message is processed by exactly one Consumer only
Flow Description
  1. Producer enqueues a message to the queue
  2. Message is stored in queue (FIFO order)
  3. Consumer dequeues and processes the message
  4. After processing, sends ACK and removes message from queue

How It Works

1

Producer enqueues a message to the queue

2

Message is stored in the queue waiting (FIFO)

3

Consumer dequeues a message from the queue

4

Consumer sends ACK after processing, message removed from queue

Pros

  • Prevents message loss (persistence)
  • Absorbs processing speed differences (buffer)
  • Reprocessing possible on failure
  • Easy horizontal scaling of consumers

Cons

  • Latency introduced (asynchronous)
  • Queue monitoring required
  • Message ordering may be difficult to guarantee
  • Dead Letter Queue management needed

Use Cases

Sidekiq / Resque (Rails background jobs) RabbitMQ AWS SQS Email sending queue Image/video encoding queue