Thanks to visit codestin.com
Credit goes to github.com

Skip to content

nrzz/EventMesh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EventMesh

Build Benchmarks NuGet License: MIT .NET Docs

EventMesh is a broker-agnostic distributed messaging platform for .NET. Write your application once against a unified API and deploy against RabbitMQ, Kafka, Redis Streams, Azure Service Bus, AWS SQS, Google Pub/Sub, or NATS JetStream without changing business logic.

EventMesh combines the developer experience of MassTransit and NServiceBus with the interoperability of CloudEvents, the observability of OpenTelemetry, and a capability-driven emulation engine that bridges broker differences transparently.

Features

  • Unified messaging APIPublishAsync, ScheduleAsync, RequestAsync, ReplayAsync, and SubscribeAsync on a single IMessageBus abstraction
  • Seven production transports — RabbitMQ, Kafka, Redis Streams, Azure Service Bus, AWS SQS, Google Pub/Sub, NATS JetStream, plus InMemory for tests and benchmarks
  • Capability model — Each broker declares supported features; the runtime emulates missing capabilities where safe
  • Reliability patterns — Transactional outbox, idempotent inbox, retry policies, dead-letter queues, and saga support
  • CloudEvents envelope — Canonical wire format with pluggable serializers (JSON, MessagePack, Protobuf, Avro)
  • Observability-first — OpenTelemetry traces, Prometheus metrics, structured logs with correlation and causation IDs
  • Control plane — Optional management API, React dashboard, and eventmesh CLI for operations and visibility
  • Plugin architecture — Extend serialization, compression, encryption, authentication, and exporters via versioned plugins

Quick Start

Prerequisites

Install packages

dotnet add package EventMesh.Core
dotnet add package EventMesh.Transport.RabbitMQ

Start local infrastructure

docker compose -f docker/docker-compose.yml up -d

Configure and publish

using EventMesh.Core;
using EventMesh.Transport.RabbitMQ;

var builder = WebApplication.CreateBuilder(args);

builder.Services
    .AddEventMesh(options =>
    {
        options.UseRabbitMq(rabbit =>
        {
            rabbit.Host = "localhost";
            rabbit.Port = 5672;
            rabbit.Username = "eventmesh";
            rabbit.Password = "eventmesh";
        });
    })
    .AddMessageHandler<OrderCreatedHandler>();

var app = builder.Build();
await app.RunAsync();

// In your application code:
await bus.PublishAsync(new OrderCreated(orderId, customerId));

await bus.ScheduleAsync(new PaymentReminder(orderId), TimeSpan.FromMinutes(5));

var response = await bus.RequestAsync<CreateOrder, OrderResponse>(new CreateOrder(items));

await bus.ReplayAsync("orders.created", from: DateTimeOffset.UtcNow.AddHours(-1));

Run tests

dotnet restore EventMesh.slnx
dotnet build EventMesh.slnx --configuration Release
dotnet test EventMesh.slnx --configuration Release

Run benchmarks

dotnet run --project benchmarks/EventMesh.Benchmarks -c Release

Supported Brokers

Broker Package Native strengths
RabbitMQ EventMesh.Transport.RabbitMQ Routing keys, priority, TTL, delayed exchange
Apache Kafka EventMesh.Transport.Kafka Partitions, consumer groups, offset replay
Redis Streams EventMesh.Transport.RedisStreams Consumer groups, pending/claim recovery
Azure Service Bus EventMesh.Transport.AzureServiceBus Sessions, transactions, native scheduling
AWS SQS EventMesh.Transport.AmazonSqs FIFO queues, delay queues, redrive DLQ
Google Pub/Sub EventMesh.Transport.GooglePubSub Ordering keys, seek-based replay
NATS JetStream EventMesh.Transport.Nats Durable consumers, sequence/time replay

See the Broker Capability Matrix for the full feature comparison and emulation behavior.

Repository Layout

EventMesh/
├── src/                    # Core libraries and transport adapters
├── tests/                  # Unit, integration, and compatibility tests
├── benchmarks/               # BenchmarkDotNet performance suite
├── cli/                    # eventmesh CLI tool
├── sdk/                    # Plugin SDK
├── dashboard/              # React management UI (Milestone 10)
├── docker/                 # Local development infrastructure
├── docs/                   # Architecture docs and ADRs
└── .github/workflows/      # CI and benchmark automation

Documentation

Document Description
ARCHITECTURE.md System design, layering, data/control plane
ROADMAP.md Milestone plan and delivery status
CONTRIBUTING.md Contribution guidelines and PR process
SECURITY.md Security policy and vulnerability reporting
SUPPORT.md Community and commercial support channels
CHANGELOG.md Release history
docs/adr/ Architecture Decision Records

Performance Targets

Metric Target
Throughput (InMemory) 100,000+ messages/sec
P95 latency (InMemory) < 5 ms
Test coverage > 90% at GA

Benchmark results are published on every release via the benchmark workflow.

License

EventMesh is released under the MIT License.

Contributing

We welcome contributions. Please read CONTRIBUTING.md and our Code of Conduct before opening a pull request.

About

Universal broker-agnostic messaging platform for .NET

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors