A .NET library providing observable microservice buses with Reactive Extensions interfaces over multiple message transports.
Obvs is a .NET library that provides observable microservice buses, wrapping underlying message transports like ActiveMQ, RabbitMQ, or Kafka with Reactive Extensions (Rx) interfaces. It simplifies building decoupled, event-driven microservices by offering a consistent programming model across different transports. The library focuses on flexibility, allowing developers to mix transports and serialization formats as needed.
.NET developers building microservices or distributed systems who want to use reactive programming patterns and need transport-agnostic messaging solutions. It's ideal for teams looking to avoid vendor lock-in and maintain flexibility in their architecture.
Developers choose Obvs for its simplicity and transport independence—it's a library, not a framework, so you use only what you need. Its integration with Reactive Extensions enables powerful composition of asynchronous data streams, while support for multiple transports and serialization formats reduces migration headaches.
An observable microservice bus library for .NET, that wraps the underlying message transports in simple Rx based interfaces.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows seamless migration between brokers like ActiveMQ, RabbitMQ, and Kafka with minimal code changes, as emphasized in the README's transport-agnostic design.
Leverages System.Reactive for composing asynchronous data streams, enabling powerful event handling with IObservable interfaces, as shown in command and event subscriptions.
Auto-discovers message contracts and multiplexes types over single topics, reducing boilerplate code through dynamic deserializer creation.
Supports multiple formats like JSON, ProtoBuf, and XML, with the ability to write custom serializers, adapting to various performance and compatibility needs.
Includes an in-memory bus option for testing or non-distributed scenarios, simplifying development without external dependencies.
Requires familiarity with Reactive Extensions concepts, which can be a barrier for teams not already using Rx in their .NET stack, as the library heavily relies on IObservable patterns.
Lacks built-in support for common microservices patterns like sagas or compensation, unlike more comprehensive frameworks such as NServiceBus or MassTransit.
Creating endpoints for external APIs involves manually implementing IServiceEndpointClient, as shown in the example, which can be time-consuming and error-prone.
Has a smaller community and fewer third-party extensions compared to established frameworks, potentially affecting long-term support and integration options.