Events/Messaging Questions
Message Brokers
Do I need to process multiple tasks concurrently?
- Message brokers allow for multiple tasks to be processed in parallel, allowing for increased efficiency and scalability.
Is scalability an important factor in my application?
- Message brokers provide the ability to scale up the application to accommodate more users or tasks.
Do I need to ensure message delivery and reliability?
- Message brokers provide reliable delivery of messages, ensuring that messages are delivered and processed correctly.
Do I need to support asynchronous communication?
- Message brokers provide the capability to support asynchronous communication, allowing for message processing to be done at a later time.
Do I need to handle message transformation?
- Message brokers provide the ability to transform messages into different formats, allowing for easier integration with other systems.
Do I need to support message routing and filtering?
- Message brokers provide the capability to route and filter messages, allowing for more efficient message processing.
Do I need to store messages in the event of an outage?
- Message brokers provide the ability to store messages in the event of reading an outage, ensuring that messages are not lost.
Do I need to support message queuing?
- Message brokers provide the ability to queue messages, ensuring that messages are processed in a timely manner.
Do I need to support multiple languages?
- Message brokers provide the capability to support multiple languages, allowing for applications to be developed in multiple languages.
Do I need to support message logging?
- Message brokers provide the ability to log messages, allowing for better tracking and debugging of applications.
| Reason | Message Broker | Event Bus | Both | None |
|---|---|---|---|---|
| Publish and subscribe messages | ✅ | |||
| Route messages to multiple destinations | ✅ | |||
| Scale message processing for multiple consumers | ✅ | |||
| Store messages for later processing | ✅ | |||
| Send messages to multiple consumers | ✅ | |||
| Publish and subscribe to events | ✅ | |||
| Send messages to a single consumer | ✅ | |||
| Send a message and then receive a response | ✅ | |||
| Guarantee message delivery | ✅ | |||
| Process messages in real time | ✅ | |||
| Guarantee message ordering | ✅ | |||
| Manage message routing | ✅ | |||
| Store messages in a queue | ✅ | |||
| Maintain message state | ✅ | |||
| Process messages asynchronously | ✅ | |||
| guarantee message delivery within a certain time frame | ✅ | |||
| Process messages in parallel | ✅ | |||
| Distribute messages to multiple hosts | ✅ | |||
| Send a response back to the sender | ✅ | |||
| Send messages with low latency | ✅ | |||
| Process messages in a distributed fashion | ✅ | |||
| Process messages with minimal configuration | ✅ | |||
| Need to transfer large files | ✅ | |||
| Need to stream data in real time | ✅ | |||
| Need to build a web application | ✅ | |||
| Need to store data in a database | ✅ | |||
| Need to make a phone call | ✅ |