OrionPatch 0.2.0
dotnet add package OrionPatch --version 0.2.0
NuGet\Install-Package OrionPatch -Version 0.2.0
<PackageReference Include="OrionPatch" Version="0.2.0" />
<PackageVersion Include="OrionPatch" Version="0.2.0" />
<PackageReference Include="OrionPatch" />
paket add OrionPatch --version 0.2.0
#r "nuget: OrionPatch, 0.2.0"
#:package OrionPatch@0.2.0
#addin nuget:?package=OrionPatch&version=0.2.0
#tool nuget:?package=OrionPatch&version=0.2.0
OrionPatch
Transactional outbox primitive for .NET. Enqueue messages inside an EF Core SaveChanges transaction; a background dispatcher hands them to a pluggable IOutboxSink at-least-once.
This is the core package. It defines IOutbox, IOutboxSink, IOutboxStorage, the dispatcher hosted service, telemetry, and a built-in in-process ChannelOutboxSink. Use the companion OrionPatch.EntityFrameworkCore package for the EF Core storage backend, and OrionPatch.Testing for test helpers.
30-second quick start
services.AddOrionPatch(o => o.PollingInterval = TimeSpan.FromSeconds(1))
.UseSink<MyKafkaSink>(); // or .UseChannelSink() for in-process
You'll also need a storage backend — see OrionPatch.EntityFrameworkCore.
Built-in ChannelOutboxSink
Useful for monoliths (in-process pub/sub) and tests. Zero external dependency.
services.AddOrionPatch().UseChannelSink(o => o.Capacity = 1000);
// Drain envelopes from anywhere in your app:
var sink = sp.GetRequiredService<ChannelOutboxSink>();
await foreach (var envelope in sink.Reader.ReadAllAsync(cancellationToken))
{
// handle envelope.MessageType / envelope.Payload
}
Telemetry
ActivitySource and Meter named Moongazing.OrionPatch. Counters cover enqueued / dispatched / failed / dead-lettered / attempts; histogram measures per-envelope dispatch duration in milliseconds.
See the repo README for the full picture, comparison vs MassTransit / Wolverine, the at-least-once contract, and the roadmap.
| Product | Versions 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 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
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.1)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Options (>= 8.0.2)
-
net8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.1)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Options (>= 8.0.2)
-
net9.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.1)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Options (>= 8.0.2)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on OrionPatch:
| Package | Downloads |
|---|---|
|
OrionPatch.EntityFrameworkCore
EF Core storage backend for OrionPatch. Adds the OrionPatch_Outbox table; SaveChangesInterceptor flushes buffered messages into the user's transaction. |
|
|
OrionPatch.Testing
Test helpers for OrionPatch. In-memory IOutboxStorage, deterministic dispatcher driver, CapturingOutboxSink, TestClock, and fluent OutboxAssertions. Zero EF Core dependency. |
GitHub repositories
This package is not used by any popular GitHub repositories.