Vulthil.Messaging.Outbox
1.0.0
dotnet add package Vulthil.Messaging.Outbox --version 1.0.0
NuGet\Install-Package Vulthil.Messaging.Outbox -Version 1.0.0
<PackageReference Include="Vulthil.Messaging.Outbox" Version="1.0.0" />
<PackageVersion Include="Vulthil.Messaging.Outbox" Version="1.0.0" />
<PackageReference Include="Vulthil.Messaging.Outbox" />
paket add Vulthil.Messaging.Outbox --version 1.0.0
#r "nuget: Vulthil.Messaging.Outbox, 1.0.0"
#:package Vulthil.Messaging.Outbox@1.0.0
#addin nuget:?package=Vulthil.Messaging.Outbox&version=1.0.0
#tool nuget:?package=Vulthil.Messaging.Outbox&version=1.0.0
Vulthil.Messaging.Outbox
Transactional bus-publish outbox for Vulthil.Messaging. Publishes and sends issued while a database transaction
is open are captured into the shared outbox table (atomically with the business changes) and relayed to the broker
after the transaction commits — eliminating the dual-write problem. A stable message id is carried through, so a
redelivered relay is deduplicated by the receiving inbox (end-to-end effectively-once).
When to use
- A consumer or command writes to the database and publishes an integration event, and the publish must not happen unless the business change commits (and must happen if it does).
Pattern
- Reuses the shared outbox engine — one
OutboxMessagestable and one relay serve both in-process domain events and broker messages, routed by anOutboxDestinationdiscriminator. - Capture is gated on an ambient transaction: a publish/send with no active transaction is sent directly.
- A commit-time trigger relays freshly-committed messages promptly; the periodic poll is the backstop.
Usage
builder.AddDbContext<AppDbContext>(config => config
.UseNpgsql("Default")
.EnableOutboxProcessing());
builder.AddMessaging(messaging =>
{
messaging.UseRabbitMq();
messaging.AddTransactionalOutbox();
});
The application's DbContext must implement ISaveOutboxMessages (a BaseDbContext already does). Capture is
relational-only (it needs a transaction to enlist in).
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. 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 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
- SonarAnalyzer.CSharp (>= 10.27.0.140913)
- Vulthil.Messaging (>= 1.0.0)
- Vulthil.SharedKernel.Outbox (>= 1.0.0)
-
net9.0
- SonarAnalyzer.CSharp (>= 10.27.0.140913)
- Vulthil.Messaging (>= 1.0.0)
- Vulthil.SharedKernel.Outbox (>= 1.0.0)
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 |
|---|---|---|
| 1.0.0 | 0 | 6/21/2026 |