# Overview
A system component used to manage message receipt and delivery across producers, message queues, consumers, and other parts of a messaging ecosystem. It is essentially a database optimized for handling message streams.
## Why Use?
- It can act as a buffer if the consumer is unavailable or overloaded, which improves [[Reliability]]
- Can implement automatic retries in some cases to improve [[Fault Tolerance]]
- It allows for one message to be sent to several recipients
# Key Considerations
## Types of Message Brokers #flashcard
- [[Traditional Style Message Broker]]
- [[Log-based Message Broker]]
<!--ID: 1751507777048-->
# Implementation Details
## System Design with a Message Broker
### Delivery Patterns of Message Brokers #flashcard
- **Load Balancing** - deliver messages to a consumer in a manner that evenly distributes the load
- In this approach, if processing of a message fails you may end up with messages being processed out of order.
- **Fan Out** - deliver all messages to all consumers
- **One Queue Per Consumer**
<!--ID: 1751507777050-->
These can be combined as well, if it fits your needs.
# Useful Links
# Related Topics
## Reference
#### Working Notes
#### Sources