M.EventBrokerSlim
1.0.0-preview3
This is a prerelease version of M.EventBrokerSlim.
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 1.0.0-preview3
NuGet\Install-Package M.EventBrokerSlim -Version 1.0.0-preview3
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="1.0.0-preview3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add M.EventBrokerSlim --version 1.0.0-preview3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: M.EventBrokerSlim, 1.0.0-preview3"
#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=1.0.0-preview3&prerelease // Install M.EventBrokerSlim as a Cake Tool #tool nuget:?package=M.EventBrokerSlim&version=1.0.0-preview3&prerelease
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.
- in-memory, in-process
- publishing is Fire and Forget style
- events don't need to implement specific interface
- events are handled on a ThreadPool threads
- tightly integrated with Microsoft.Extensions.DependencyInjection
- each handler is resolved and runned in a new DI container scope
How does it work
Implement 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, CancellationToken cancellationToken)
{
// process the event
}
public Task OnError(Exception exception, SomeEvent @event, CancellationToken cancellationToken)
{
// called on unhandled exeption from Handle
}
}
Add event broker impelementation to DI container using AddEventBroker
extension method and register handlers:
serviceCollection.AddEventBroker(
x => x.AddKeyedTransient<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
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.1.0 | 374 | 6/29/2024 |
3.0.0 | 368 | 5/2/2024 |
2.0.0 | 84 | 5/1/2024 |
1.0.0 | 624 | 1/12/2024 |
1.0.0-preview3 | 85 | 1/6/2024 |
1.0.0-preview2 | 87 | 1/1/2024 |
1.0.0-preview1 | 96 | 12/28/2023 |