Excalibur.EventSourcing.Handlers
10.0.0-alpha.11
dotnet add package Excalibur.EventSourcing.Handlers --version 10.0.0-alpha.11
NuGet\Install-Package Excalibur.EventSourcing.Handlers -Version 10.0.0-alpha.11
<PackageReference Include="Excalibur.EventSourcing.Handlers" Version="10.0.0-alpha.11" />
<PackageVersion Include="Excalibur.EventSourcing.Handlers" Version="10.0.0-alpha.11" />
<PackageReference Include="Excalibur.EventSourcing.Handlers" />
paket add Excalibur.EventSourcing.Handlers --version 10.0.0-alpha.11
#r "nuget: Excalibur.EventSourcing.Handlers, 10.0.0-alpha.11"
#:package Excalibur.EventSourcing.Handlers@10.0.0-alpha.11
#addin nuget:?package=Excalibur.EventSourcing.Handlers&version=10.0.0-alpha.11&prerelease
#tool nuget:?package=Excalibur.EventSourcing.Handlers&version=10.0.0-alpha.11&prerelease
Excalibur.EventSourcing.Handlers
Opt-in integration that routes a dispatched message to an event-sourced aggregate using the
Decider pattern. It bridges Excalibur event sourcing (IEventSourcedRepository) and Dispatch
messaging (IActionHandler) without pulling messaging concerns into the event-sourcing core.
Usage
services.AddAggregateHandler<OrderAggregate, Guid, PlaceOrder>(
resolveId: msg => msg.OrderId,
decide: (order, msg, ct) =>
{
order.Place(msg.Items); // raises domain events via the aggregate
return Task.CompletedTask;
});
On dispatch the handler:
- resolves the aggregate id from the message,
- loads the aggregate (
GetByIdAsync) — a missing aggregate throwsResourceNotFoundException(no state is fabricated), - invokes
decide, which raises the aggregate's own events, - saves with the load-time ETag as the expected version — a concurrent write throws
ConcurrencyException.
The identity resolver and decision are supplied at registration (not reflected), so registration is AOT-safe.
| Product | Versions 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. |
-
net10.0
- Ben.Demystifier (>= 0.4.1)
- Dapper (>= 2.1.72)
- Excalibur.Data.Abstractions (>= 10.0.0-alpha.11)
- Excalibur.Dispatch.Abstractions (>= 10.0.0-alpha.11)
- Excalibur.Domain (>= 10.0.0-alpha.11)
- Excalibur.EventSourcing.Abstractions (>= 10.0.0-alpha.11)
- Medo.Uuid7 (>= 3.2.0)
- Microsoft.Extensions.Configuration (>= 10.0.10)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.10)
- Microsoft.Extensions.DependencyInjection (>= 10.0.10)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.10)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Options (>= 10.0.10)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.10)
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 |
|---|---|---|
| 10.0.0-alpha.11 | 36 | 9/15/2026 |
| 10.0.0-alpha.10 | 61 | 9/6/2026 |
| 10.0.0-alpha.9 | 59 | 8/31/2026 |
| 10.0.0-alpha.8 | 74 | 8/14/2026 |
| 10.0.0-alpha.7 | 62 | 8/13/2026 |
| 10.0.0-alpha.6 | 67 | 8/11/2026 |
| 10.0.0-alpha.5 | 57 | 8/10/2026 |
| 10.0.0-alpha.4 | 62 | 8/10/2026 |
Release notes and versioning policy: https://docs.excalibur-dispatch.dev/docs/migration/version-upgrades