A lean service bus implementation for .NET that enables asynchronous communication in microservices following the 'smart endpoints, dumb pipes' principle.
Rebus is a lean service bus implementation for .NET that facilitates asynchronous communication between microservices. It acts as the 'dumb pipes' in a 'smart endpoints, dumb pipes' architecture, enabling reliable message passing without imposing complex logic on the messaging layer. The library focuses on simplicity, minimal dependencies, and seamless integration with existing .NET applications.
.NET developers building microservices or distributed systems that require asynchronous messaging and event-driven communication. It's ideal for teams following the 'smart endpoints, dumb pipes' principle who need a lightweight, configurable service bus.
Developers choose Rebus for its simplicity, minimal overhead, and excellent error messages, which reduce friction in setup and debugging. Unlike heavier enterprise service buses, Rebus stays lean and focused, offering just enough functionality to handle messaging without becoming bloated or complex.
:bus: Simple and lean service bus implementation for .NET
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Depends only on JSON.NET and targets .NET Standard 2.0, ensuring broad compatibility with .NET Framework 4.6.1+, .NET Core, and .NET 5+, while reducing version conflicts.
Offers a fluent configuration syntax, as shown in the README with examples for transports like MSMQ and routing, making setup straightforward for common scenarios.
Aims to provide the best error messages in the world, which helps in quickly diagnosing issues in distributed asynchronous communication.
Includes small, dedicated projects for various IoC containers and external dependencies, such as transports and logging, facilitating seamless adoption into existing .NET applications.
As a 'dumb pipes' implementation, it lacks built-in support for advanced messaging patterns like sagas, compensation handlers, or complex routing, requiring custom application logic.
While basic configuration is simple, integrating with custom transports or serializers can be more involved and may require deeper understanding of the library's internals.
Compared to alternatives like NServiceBus or MassTransit, Rebus has a smaller ecosystem, which might result in fewer third-party tools, plugins, or community-driven resources.