A Message Queue is a communication method used in distributed systems to send messages between services or components asynchronously.
It decouples the sender and receiver, so tasks like sending emails or processing data can happen reliably, even if some services are slow or temporarily down.
It’s helpful when you need to handle high loads, improve reliability, or make systems more scalable and resilient.
You need to know
Message queues support three delivery guarantees: at-most-once, at-least-once, and exactly-once.
Message queues offer advanced features like message prioritization to allow critical messages to be processed first.
Adding consumers, sharding by key, and using different topics are ways to handle high loads and organize messages in large systems.
Message queues add extra infrastructure to manage, and as you scale, it gets harder. You need to handle retries, make sure actions aren’t repeated (idempotency), and keep track of everything across different systems.
Popular technologies
Apache Kafka - Distributed, great for real-time data streaming
RabbitMQ - Lightweight, supports many protocols (e.g., AMQP)
Amazon SQS - Managed queue on AWS, easy to integrate
Like posts like this?
Every week, you'll get a new system design concept, broken down like this one.
Free subscribers also get a little bonus:
🎁 The System Design Interview Preparation Cheat Sheet
If you're into visuals, paid subscribers unlock:
→ My Excalidraw system design template – so you have somewhere to start
→ My Excalidraw component library – used in the diagram of this issue
→ 12 Back-of-the-Envelope Calculations Every Engineer Should Know
No pressure though. Your support helps me keep writing, and I appreciate it more than you know ❤️