OrionPatch 0.3.3

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

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
Loading failed