Rebus is a lightweight yet powerful message-based framework for .NET, designed to simplify asynchronous communication between distributed systems. By abstracting the complexity of underlying message queues, Rebus enables clear and robust handling of message flows, making it particularly well-suited for microservice architectures and integration solutions. Some of its key strengths include simple configuration, high flexibility, and strong support for reliable message handling.
In our solution, Rebus has been used in two layers with the purpose of managing push notifications to our mobile application. This separation has enabled a clear division of responsibilities and contributed to a more scalable and maintainable architecture.

Furthermore, we have used both Rebus and its support for sagas (Rebus Saga) in a component we call EventBroker. EventBroker acts as an intermediary that listens to Azure Enterprise Service Bus and consumes incoming messages. The business logic required to process these messages is implemented in a Rebus Saga, making it possible to manage complex states and long-running processes in a structured way.
After processing, EventBroker publishes new domain messages, which are consumed by the backend system—also based on Rebus—and forwarded to the mobile application via Firebase Cloud Messaging (FCM) in the form of push notifications.
One of the main reasons I consider Rebus to be a powerful tool is its elegant handling of state and flow logic through Rebus Saga. It provides a clear model for coordinating distributed processes, while keeping the implementation both simple and efficient.