/IntegrationEvents

Primary LanguageC#MIT LicenseMIT

IntegrationEvents

Build status CodeQL GitHub issues GitHub license

IntegrationEvents is a library that provides a simple way to implement the Integration Events pattern.

Nuget packages

Name Version Downloads
IntegrationEvents.Abstractions nuget stats
IntegrationEvents.RabbitMq nuget stats

Installation

Add following nuget reference in business project:

PM> Install-Package IntegrationEvents.Abstractions

And add following nuget reference in integration project:

PM> Install-Package IntegrationEvents.RabbitMq

How to use

First of all, you need to create a class that derived from the IntegrationEvent class.

public class OrderCreatedIntegrationEvent : IntegrationEvent
{
    public OrderCreatedIntegrationEvent(Guid orderId, string orderName)
    {
        OrderId = orderId;
        OrderName = orderName;
    }

    public Guid OrderId { get; }

    public string OrderName { get; }
}

Then, you need to create a class that derived from the IntegrationEventHandler class.

public class OrderCreatedIntegrationEventHandler : IIntegrationEventHandler<OrderCreatedIntegrationEvent>
{
    public override Task Handle(OrderCreatedIntegrationEvent @event)
    {
    }
}

Finally, you need to register the IntegrationEventHandler class in the IServiceCollection.

services.AddIntegrationEventBus(builder =>
{
    builder.AddIntegrationEventsWithRabbitMq();
    builder.AddIntegrationEventHandler<OrderCreatedIntegrationEventHandler>();
});

Ok! Now you can publish the IntegrationEvent class in the business project.

var integrationEventBus = serviceProvider.GetRequiredService<IIntegrationEventBus>();
await integrationEventBus.PublishAsync(new OrderCreatedIntegrationEvent(Guid.NewGuid(), "OrderName"));

Final

Leave a comment on GitHub if you have any questions or suggestions.

Turn on the star if you like this project.

License

This project is licensed under the MIT License