Zwergenland.CleanMessageBus.Abstractions 1.2.1

dotnet add package Zwergenland.CleanMessageBus.Abstractions --version 1.2.1
                    
NuGet\Install-Package Zwergenland.CleanMessageBus.Abstractions -Version 1.2.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="Zwergenland.CleanMessageBus.Abstractions" Version="1.2.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Zwergenland.CleanMessageBus.Abstractions" Version="1.2.1" />
                    
Directory.Packages.props
<PackageReference Include="Zwergenland.CleanMessageBus.Abstractions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Zwergenland.CleanMessageBus.Abstractions --version 1.2.1
                    
#r "nuget: Zwergenland.CleanMessageBus.Abstractions, 1.2.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.
#:package Zwergenland.CleanMessageBus.Abstractions@1.2.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Zwergenland.CleanMessageBus.Abstractions&version=1.2.1
                    
Install as a Cake Addin
#tool nuget:?package=Zwergenland.CleanMessageBus.Abstractions&version=1.2.1
                    
Install as a Cake Tool

CleanMessageBus

This package provides an abstraction around message busses for easy integration of events. Currently the following message brokers are supported:

  • RabbitMQ

Publishing Events

  • Event object must implement marker interface IIntegrationevent for integration events ot IDomainEvent for domain events

  • Inject IMessageBus to desired service

  • Publish event by using IMessageBus.PublishAsync(integrationEvent)

  • Automatic creation of producer resource on message bus (for example exchange for rabbitmq)

  • Example:

public record UserRegisteredEvent(string Username, string Email) : IIntegrationevent;

var integrationEvent = new UserRegisteredEvent("JohnDoe", "john@doe.com");
await messageBus.PublishAsync(integrationevent);

Change producer name

  • Use attribute [Produces(Name="ProducerName")] to set producer name

Handling Events

  • Handler must inherit from IntegrationEventHandlerBase<TIntegrationEvent> class for integration events or from DomainEventHandlerBase<TDomainEvent> for domain events
  • Generic type specifies domain event type to receive
  • Implementation logic must be implemented in the Handle method
  • Registration happens automatically via dependency injection
  • Automatic creation of consumer resource on message bus (for example queue for rabbitmq)
  • Integration of CleanDomainValidation result types

Example:

public class UserRegisteredEventHandler : IntegrationEventHandlerBase<UserRegisteredEvent>
{
    public override async Task<CanFail> Handle(UserRegisteredEvent @event, CancellationToken cancellationToken)
    {
        Console.WriteLine($"User {@event.Username} with email {@event.Email} has been registered.");
        
        //TODO furhter logic in here
        
        return CanFail.Success;
    }
}

Change consumer name

  • Use attribute [ConsumedBy(Name="ConsumerName")] to set consumer name
  • Not allowed for domain events!

Change producer name

  • Use attribute [ProducedBy(Name="ProducerName")] to set producer name

Throttle message rate

  • Use attribute [Throttled(RequestInterval=1000)] to set message processing interval
  • Message bus waits specified time (in ms) before processing the next event

Configuration via dependency injection

  • Define assemblies containing events and handlers
  • Select and configure message broker

Example:

builder.Services.AddCleanMessageBus(config => config
    .RegisterIntegrationEventsFromAssembly(Assembly.GetExecutingAssembly())
    .RegisterDomainEventsFromAssemby(Assembly.GetExecutingAssembly())
    .RegisterHandlersFromAssemby(Assembly.GetExecutingAssembly()
    .UseRabbitMq(rabbitConfig => rabbitConfig
        .WithHostname("localhost")
        .WithCredentials("username", "password")
        .UseSsl())));
Product 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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Zwergenland.CleanMessageBus.Abstractions:

Package Downloads
Zwergenland.CleanMessageBus.RabbitMQ

RabbitMQ message bus implementation for easy integration of events

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.2.1 253 4/3/2026
1.2.0 164 3/17/2026
1.1.0 155 12/29/2025
1.0.0 236 12/23/2025