MediatR

MediatR event handling implementation in RCommon

Overview

Most enterprise applications have a need for a simple in-memory event bus which implements the observer pattern through the pub/sub pattern. RCommon implements a simple dependency-free event bus for this utility but there are some advantages to using MediatR. MediatR is a mediator pattern implementation which can be used as an event bus. MediatR is a mature library and allows developers to use aspect oriented concepts to manipulate the request pipeline.

Configuration

using Examples.EventHandling.MediatR;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using RCommon;
using RCommon.EventHandling.Producers;
using RCommon.MediatR;
using RCommon.MediatR.Producers;
using System.Diagnostics;
using System.Reflection;
using static System.Net.Mime.MediaTypeNames;

try
{
    var host = Host.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((context, builder) =>
                {

                    ConfigurationContainer.Configuration = builder
                        .Build();
                })
                .ConfigureServices(services =>
                {
                    // Configure RCommon
                    services.AddRCommon()
                        .WithEventHandling<MediatREventHandlingBuilder>(eventHandling =>
                        {
                            eventHandling.AddProducer<PublishWithMediatREventProducer>();
                            
                            eventHandling.AddSubscriber<TestEvent, TestEventHandler>();
                        });

                }).Build();         
}
catch (Exception ex)
{   
    Console.WriteLine(ex.ToString());
    
}

Implementation

The implementation details for how you produce and subscribe to events will not change due to a consistent producer/subscriber API in RCommon.

Producing the Event

Subscribing to the Event

Try running some examples

Event Handling: MediatR

Last updated