# 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