MediatR.ParallelPublisher 1.0.1

dotnet add package MediatR.ParallelPublisher --version 1.0.1                
NuGet\Install-Package MediatR.ParallelPublisher -Version 1.0.1                
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="MediatR.ParallelPublisher" Version="1.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MediatR.ParallelPublisher --version 1.0.1                
#r "nuget: MediatR.ParallelPublisher, 1.0.1"                
#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 MediatR.ParallelPublisher as a Cake Addin
#addin nuget:?package=MediatR.ParallelPublisher&version=1.0.1

// Install MediatR.ParallelPublisher as a Cake Tool
#tool nuget:?package=MediatR.ParallelPublisher&version=1.0.1                

MediatR.ParallelPublisher

MediatR.ParallelPublisher is an extension for MediatR that enables parallel and fire-and-forget publishing of notifications. The library aims to improve performance and responsiveness by executing notification handlers concurrently, while also providing exception handling mechanisms for notification processing.

Features

  • Parallel execution of notification handlers
  • Fire-and-forget notifications
  • Customizable exception handling

Installation

Install MediatR.ParallelPublisher via NuGet Package Manager or by running the following command:

dotnet add package MediatR.ParallelPublisher

Usage

After installing the package, register the parallel publisher in your dependency injection container:

services.AddMediatR(config =>
{
    config.UseParallelNotificationPublisher(options =>
    {
        // Register custom exception handlers (optional)
        options.RegisterExceptionHandler<MyCustomExceptionHandler>();
    });
});

To make a notification fire-and-forget, either implement the IFireAndForgetNotification interface or use the FireAndForgetNotificationAttribute:

// Using the IFireAndForgetNotification interface
public class MyNotification : INotification, IFireAndForgetNotification
{
    // ...
}

// Using the FireAndForgetNotificationAttribute
[FireAndForgetNotification]
public class MyOtherNotification : INotification
{
    // ...
}

Implement your notification handlers as usual, and they will be executed in parallel or fire-and-forget mode, depending on the notification type:

public class MyNotificationHandler : INotificationHandler<MyNotification>
{
    public Task Handle(MyNotification notification, CancellationToken cancellationToken)
    {
        // Your handler implementation
    }
}

For custom exception handling, implement the INotificationExceptionHandler interface:

public class MyCustomExceptionHandler : INotificationExceptionHandler
{
    public Task HandleAsync(INotification notification, NotificationException exception)
    {
        // Handle the exception for the specified notification
    }
}

License

MediatR.ParallelPublisher is released under the Apache License. See the LICENSE file for details.

Contributing

Contributions are welcome! Feel free to submit issues, feature requests, or pull requests.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  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.

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
1.0.1 5,903 3/26/2023