Koto.Messaging.Wolverine 0.3.0-preview.6

This is a prerelease version of Koto.Messaging.Wolverine.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Koto.Messaging.Wolverine --version 0.3.0-preview.6
                    
NuGet\Install-Package Koto.Messaging.Wolverine -Version 0.3.0-preview.6
                    
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="Koto.Messaging.Wolverine" Version="0.3.0-preview.6" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Koto.Messaging.Wolverine" Version="0.3.0-preview.6" />
                    
Directory.Packages.props
<PackageReference Include="Koto.Messaging.Wolverine" />
                    
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 Koto.Messaging.Wolverine --version 0.3.0-preview.6
                    
#r "nuget: Koto.Messaging.Wolverine, 0.3.0-preview.6"
                    
#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 Koto.Messaging.Wolverine@0.3.0-preview.6
                    
#: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=Koto.Messaging.Wolverine&version=0.3.0-preview.6&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Koto.Messaging.Wolverine&version=0.3.0-preview.6&prerelease
                    
Install as a Cake Tool

Koto.Messaging.Wolverine

Wolverine + Kafka implementation of Koto messaging abstractions.

What's included

Type Purpose
WolverineIntegrationEventPublisher IIntegrationEventPublisherIMessageBus.PublishAsync
WolverineIntegrationCommandDispatcher IIntegrationCommandDispatcher → fire-and-forget + request/reply
IntegrationEventConsumerBase<TEvent> Idempotent Kafka consumer base with DLQ routing
IntegrationCommandConsumerBase<TCommand> Kafka command consumer base with structured logging
CorrelationIdMiddleware Propagates Wolverine Envelope.CorrelationId via CorrelationContext
IdempotencyMiddleware Policy-level deduplication (alternative to the consumer base check)
IProcessedMessageStore Idempotency store abstraction (in-memory default; install Koto.Messaging.Wolverine.Postgres for a durable PostgreSQL store in production)

Setup

// Program.cs
builder.Services.AddKotoWolverine(opts =>
{
    opts.RequestReplyTimeout = TimeSpan.FromSeconds(10);
    opts.IdempotencyWindow = TimeSpan.FromHours(24);
});

builder.Host.UseWolverine(opts =>
{
    opts.UseKafka("localhost:9092").AutoProvision();

    // Route outbound events to topics
    opts.PublishMessage<OrderPlacedEvent>().ToKafkaTopic("orders.order-placed");

    // Listen for inbound events
    opts.ListenToKafkaTopic("payments.payment-processed").ProcessInline();

    // Propagate correlation IDs on every handler
    opts.Policies.AddMiddleware<CorrelationIdMiddleware>();

    // Auto-dispatch domain events from EF Core aggregates to the outbox
    opts.PublishDomainEventsFromEntityFrameworkCore<IHasDomainEvents, IDomainEvent>(
        e => e.DomainEvents);
});

Kafka topic naming convention

  • Event topics: {service}.{event-type}orders.order-placed
  • Consumer groups: {consuming-service}.{event-type}-consumer

Implementing a consumer

public sealed class PaymentProcessedConsumer
    : IntegrationEventConsumerBase<PaymentProcessedEvent>
{
    public PaymentProcessedConsumer(
        IProcessedMessageStore store,
        ILogger<IntegrationEventConsumerBase<PaymentProcessedEvent>> logger)
        : base(store, logger) { }

    protected override async Task ConsumeAsync(PaymentProcessedEvent @event, CancellationToken ct)
    {
        // domain logic here
    }
}

Production idempotency store

Replace InMemoryProcessedMessageStore with the durable PostgreSQL store from Koto.Messaging.Wolverine.Postgres:

builder.Services.AddPostgresProcessedMessageStore(connectionString);
Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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 Koto.Messaging.Wolverine:

Package Downloads
Koto.Messaging.Wolverine.Postgres

PostgreSQL pieces of Koto messaging: durable IProcessedMessageStore for consumer idempotency (survives restarts, auto schema, background cleanup) and UseKotoDurableOutbox — one-line durable outbox defaults (envelope storage, EF Core transactions, domain event scraping).

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.4.0 106 7/21/2026
0.3.0-preview.15 61 7/21/2026
0.3.0-preview.14 58 7/21/2026
0.3.0-preview.13 50 7/21/2026
0.3.0-preview.12 51 7/21/2026
0.3.0-preview.11 56 7/21/2026
0.3.0-preview.10 53 7/21/2026
0.3.0-preview.9 57 7/21/2026
0.3.0-preview.8 56 7/21/2026
0.3.0-preview.7 57 7/21/2026
0.3.0-preview.6 51 7/20/2026
0.3.0-preview.5 51 7/19/2026
0.3.0-preview.4 57 7/19/2026
0.3.0-preview.3 57 7/11/2026
0.3.0-preview.2 53 7/11/2026
0.3.0-preview.1 64 7/3/2026
0.2.0-preview.1 73 6/28/2026
0.1.0-preview.5 71 5/13/2026
0.1.0-preview.4 65 5/13/2026
0.1.0-preview.3 67 5/13/2026