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.
- 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.
- ISender
- IReceiver
- ISender<TKey, TEvent>
- IReceiver<TKey, TEvent>
- IAsyncSender
- IAsyncReceiver
- IAsyncSender<TKey, TEvent>
- IAsyncReceiver<TKey, TEvent>
- IRequest<TIn, TOut>
- IRequest<TKey, TIn, TOut>
- IAsyncRequest<TIn, TOut>
- IAsyncRequest<TKey, TIn, TOut>
- Ideas and inspiration from MessagePipe (Cysharp). My project is essentially a rewrite because I encountered that MessagePipe wasn't working for me.
Messager.NET is licensed under the MIT License, see LICENSE for more information.