Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Core
  3. Obvs

Obvs

MITC#v6.0.0

A .NET library providing observable microservice buses with Reactive Extensions interfaces over multiple message transports.

Visit WebsiteGitHubGitHub
338 stars45 forks0 contributors

What is Obvs?

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.

Target Audience

.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.

Value Proposition

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.

Overview

An observable microservice bus library for .NET, that wraps the underlying message transports in simple Rx based interfaces.

Use Cases

Best For

  • Building decoupled microservices with reactive programming in .NET
  • Migrating between message brokers (e.g., RabbitMQ to Kafka) with minimal code changes
  • Creating transport-agnostic event-driven architectures
  • Integrating external APIs into a consistent messaging system via custom endpoints
  • Developing systems that require flexible serialization formats (JSON, ProtoBuf, XML)
  • Implementing local in-memory messaging for testing or non-distributed scenarios

Not Ideal For

  • Teams preferring full-fledged frameworks with built-in saga orchestration and advanced tooling
  • Developers unfamiliar with Reactive Extensions who need a simpler, callback-based messaging approach
  • Projects requiring deep, low-level integration with specific broker features like Kafka partitions
  • Applications that are primarily synchronous and don't benefit from reactive streaming complexities

Pros & Cons

Pros

Transport Agnosticism

Allows seamless migration between brokers like ActiveMQ, RabbitMQ, and Kafka with minimal code changes, as emphasized in the README's transport-agnostic design.

Reactive Extensions Integration

Leverages System.Reactive for composing asynchronous data streams, enabling powerful event handling with IObservable interfaces, as shown in command and event subscriptions.

Convention-Based Messaging

Auto-discovers message contracts and multiplexes types over single topics, reducing boilerplate code through dynamic deserializer creation.

Flexible Serialization Options

Supports multiple formats like JSON, ProtoBuf, and XML, with the ability to write custom serializers, adapting to various performance and compatibility needs.

Local Development Support

Includes an in-memory bus option for testing or non-distributed scenarios, simplifying development without external dependencies.

Cons

Rx Learning Curve

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.

Limited Advanced Features

Lacks built-in support for common microservices patterns like sagas or compensation, unlike more comprehensive frameworks such as NServiceBus or MassTransit.

Custom Endpoint Complexity

Creating endpoints for external APIs involves manually implementing IServiceEndpointClient, as shown in the example, which can be time-consuming and error-prone.

Ecosystem Maturity

Has a smaller community and fewer third-party extensions compared to established frameworks, potentially affecting long-term support and integration options.

Frequently Asked Questions

Quick Stats

Stars338
Forks45
Contributors0
Open Issues3
Last commit1 year ago
CreatedSince 2015

Tags

#reactive-extensions#event-driven#service-bus#distributed-systems#csharp#dotnet#messaging#microservices#observable#transport-agnostic#message-bus

Built With

S
System.Reactive
D
Docker
.
.NET

Links & Resources

Website

Included in

Core21.2k
Auto-fetched 10 hours ago

Related Projects

PollyPolly

Polly is a .NET resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner. From version 6.0.1, Polly targets .NET Standard 1.1 and 2.0+.

Stars14,202
Forks1,276
Last commit4 days ago
OcelotOcelot

.NET API Gateway

Stars8,711
Forks1,683
Last commit1 day ago
AspNetCore.Diagnostics.HealthChecksAspNetCore.Diagnostics.HealthChecks

Enterprise HealthChecks for ASP.NET Core Diagnostics Package

Stars4,368
Forks865
Last commit9 days ago
FoundatioFoundatio

Pluggable foundation blocks for building distributed apps.

Stars2,091
Forks251
Last commit19 hours ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub