Skip to content

NovoDwarf/Messager.NET

Repository files navigation

Messager.NET

Overview

[EN|RU]

Warning

THE PROJECT IS IN EARLY DEVELOPMENT, SO BUGS AND UB ARE INEVITABLE, AS WELL AS BAD CODE OR OTHER ERRORS

A lightweight and fast messaging system (pub/sub) for .NET 10 with support for:

  • Keyed and unkeyed typed events;
  • Synchronous and asynchronous senders/receivers;
  • Lazy broker creation for each event type;
  • Optional DI integration via separate packages;
  • Single point of contact — Exchange.

The goal is simple, transparent, and thread-safe event exchange between services/modules without unnecessary coupling.

Roadmap

  • Refactor the code to make it more readable.
  • Add self-made code analyzers for preventing common mistakes.
  • Expand integrations for additional DI providers beyond Microsoft.Extensions.DependencyInjection.
  • Support for middleware and event pipelines (logging, filtering, retrievals).
  • Other message handling options (e.g., Channel, IObservable).
  • Enhanced diagnostics and metrics for brokers and subscribers.
  • Enhanced subscriber error handling policies.

How it works

Pub/Sub

Simple

  • ISender
  • IReceiver

Keyed

  • ISender<TKey, TEvent>
  • IReceiver<TKey, TEvent>

Async Simple

  • IAsyncSender
  • IAsyncReceiver

Async Keyed

  • IAsyncSender<TKey, TEvent>
  • IAsyncReceiver<TKey, TEvent>

Request

Simple

  • IRequest<TIn, TOut>

Keyed

  • IRequest<TKey, TIn, TOut>

Async Simple

  • IAsyncRequest<TIn, TOut>

Async Keyed

  • IAsyncRequest<TKey, TIn, TOut>

Usage

See

Thanks

  • Ideas and inspiration from MessagePipe (Cysharp). My project is essentially a rewrite because I encountered that MessagePipe wasn't working for me.

License

Messager.NET is licensed under the MIT License, see LICENSE for more information.

About

A lightweight and fast messaging system (pub/sub) for .NET 10

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages