M.EventBrokerSlim
3.0.0
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package M.EventBrokerSlim --version 3.0.0
NuGet\Install-Package M.EventBrokerSlim -Version 3.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="M.EventBrokerSlim" Version="3.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add M.EventBrokerSlim --version 3.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: M.EventBrokerSlim, 3.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install M.EventBrokerSlim as a Cake Addin #addin nuget:?package=M.EventBrokerSlim&version=3.0.0 // Install M.EventBrokerSlim as a Cake Tool #tool nuget:?package=M.EventBrokerSlim&version=3.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
EventBrokerSlim
An implementation of broadcasting events in a fire-and-forget style.
Features:
- in-memory, in-process
- publishing is Fire and Forget style
- events don't have to implement specific interface
- event handlers are runned on a
ThreadPool
threads - the number of concurrent handlers running can be limited
- built-in retry option
- tightly integrated with Microsoft.Extensions.DependencyInjection
- each handler is resolved and runned in a new DI container scopee
How does it work
Define an event handler by implementing IEventHadler<TEvent>
interface:
public record SomeEvent(string Message);
public class SomeEventHandler : IEventHandler<SomeEvent>
{
// Inject services added to the DI container
public SomeEventHandler()
{
}
public async Task Handle(SomeEvent @event, IRetryPolicy retryPolicy, CancellationToken cancellationToken)
{
// process the event
}
public async Task OnError(Exception exception, SomeEvent @event, IRetryPolicy retryPolicy, CancellationToken cancellationToken)
{
// called on unhandled exeption from Handle
// optionally use retryPolicy.RetryAfter(TimeSpan)
}
}
Use AddEventBroker
extension method to register IEventBroker
and handlers:
serviceCollection.AddEventBroker(
x => x.AddTransient<SomeEvent, SomeEventHandler>());
Inject IEventBroker
and publish events:
class MyClass
{
private readonly IEventBroker _eventBroker;
public MyClass(IEventBroker eventBroker)
{
_eventBroker = eventBroker;
}
public async Task DoSomething()
{
var someEvent = new SomeEvent("Something happened");
await _eventBroker.Publish(someEvent);
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
- Microsoft.Extensions.ObjectPool (>= 8.0.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
3.3.0 | 97 | 11/23/2024 |
3.2.0 | 414 | 9/14/2024 |
3.1.0 | 522 | 6/29/2024 |
3.0.0 | 386 | 5/2/2024 |
2.0.0 | 108 | 5/1/2024 |
1.0.0 | 650 | 1/12/2024 |
1.0.0-preview3 | 109 | 1/6/2024 |
1.0.0-preview2 | 131 | 1/1/2024 |
1.0.0-preview1 | 120 | 12/28/2023 |