OrionPatch 0.2.19
See the version list below for details.
dotnet add package OrionPatch --version 0.2.19
NuGet\Install-Package OrionPatch -Version 0.2.19
<PackageReference Include="OrionPatch" Version="0.2.19" />
<PackageVersion Include="OrionPatch" Version="0.2.19" />
<PackageReference Include="OrionPatch" />
paket add OrionPatch --version 0.2.19
#r "nuget: OrionPatch, 0.2.19"
#:package OrionPatch@0.2.19
#addin nuget:?package=OrionPatch&version=0.2.19
#tool nuget:?package=OrionPatch&version=0.2.19
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 (5)
Showing the top 5 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. |
|
|
OrionPatch.Kafka
Apache Kafka publisher sink for OrionPatch. Implements IOutboxSink by producing each envelope to a configurable topic with the envelope id as the message key (partition affinity for ordering) and Kafka headers carrying orionpatch-message-type / orionpatch-correlation-id / consumer-supplied envelope headers. |
|
|
OrionPatch.AzureServiceBus
Azure Service Bus publisher sink for OrionPatch. Implements IOutboxSink by publishing envelopes to a queue or topic; sets MessageId to the envelope id and ApplicationProperties for orionpatch-message-type and W3C traceparent so downstream consumers dedupe and trace cleanly. |
|
|
OrionPatch.RabbitMQ
RabbitMQ publisher sink for OrionPatch. Implements IOutboxSink by publishing envelopes to a configurable exchange + routing key with publisher confirms, persistent delivery mode, and W3C traceparent / OrionPatch envelope id propagation via message headers. Subscription/consumer side stages to v0.2.5. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.4.2 | 203 | 7/27/2026 |
| 0.4.1 | 203 | 6/30/2026 |
| 0.4.0 | 211 | 6/28/2026 |
| 0.3.3 | 213 | 6/27/2026 |
| 0.3.2 | 211 | 6/22/2026 |
| 0.3.1 | 252 | 6/20/2026 |
| 0.3.0 | 217 | 6/19/2026 |
| 0.2.32 | 226 | 6/17/2026 |
| 0.2.31 | 221 | 6/16/2026 |
| 0.2.30 | 207 | 6/16/2026 |
| 0.2.29 | 223 | 6/15/2026 |
| 0.2.25 | 219 | 6/12/2026 |
| 0.2.24 | 220 | 6/12/2026 |
| 0.2.23 | 203 | 6/11/2026 |
| 0.2.22 | 261 | 6/11/2026 |
| 0.2.21 | 154 | 6/11/2026 |
| 0.2.20 | 148 | 6/11/2026 |
| 0.2.19 | 151 | 6/11/2026 |
| 0.2.18 | 148 | 6/11/2026 |
| 0.2.17 | 146 | 6/11/2026 |