๐ฌ
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
- Producer enqueues a message to the queue
- Message is stored in queue (FIFO order)
- Consumer dequeues and processes the message
- 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