Robotico.Outbox 1.0.2
Robotico.Outbox
Reference Robotico.Outbox when you use the transactional outbox pattern. Interface: IOutbox (EnqueueAsync, CommitAsync returning Result).
Robotico dependencies
flowchart LR A[Robotico.Outbox] --> B[Robotico.Result]
Related packages (reuse where it fits)
| Package | Use with Outbox |
|---|---|
| Robotico.Option | Optional message metadata (e.g. correlation id, partition key) as Option<T>; avoids null. |
| Robotico.Resilience | Retry or circuit breaker in the outbox processor when publishing messages after commit (recommended). |
| Robotico.Validation | Validate messages before EnqueueAsync (e.g. IValidator<TMessage>). |
Quick start
Enqueue messages in the same transaction as your domain changes, then commit:
Result enqueueResult = await _outbox.EnqueueAsync(new OrderPlaced(orderId), cancellationToken);
if (enqueueResult.IsError(out _)) { /* handle */ }
Result commitResult = await _outbox.CommitAsync(cancellationToken);
A separate outbox processor (your code or a host) reads committed rows and publishes to the message bus. Use Robotico.Resilience for retry when publishing. See docs/design.adoc for design and related packages.
Installation
dotnet add package Robotico.Outbox
Building and testing
dotnet restore
dotnet build -c Release
dotnet test -c Release --verbosity normal
With coverage (Coverlet):
dotnet test -c Release --collect:"XPlat Code Coverage" --results-directory ./coverage
CI enforces 90% line coverage (or passes when the library has no executable lines) and runs a trim-validate build. Versioning: SemVer.
License
See repository license file.
Showing the top 20 packages that depend on Robotico.Outbox.
| Packages | Downloads |
|---|---|
|
Robotico.Outbox.MishimaDb
IOutbox backed by MishimaDb logical-type rows. Enqueue stages one OutboxMessage row; optional MishimaWriteTransaction defers persistence until the host unit of work commits.
|
22 |
|
Robotico.Outbox.MishimaDocs
IOutbox backed by MishimaDocs. Enqueue writes one JSON document per message; optional IMishimaWriteBatch defers persistence until CommitAsync.
|
22 |
|
Robotico.Outbox.InMemory
In-memory IOutbox with preserved enqueue order for tests and single-process scenarios. Depends on Robotico.Outbox, Robotico.Result.
|
21 |
|
Robotico.Outbox.MishimaDb
IOutbox backed by MishimaDb logical-type rows. Enqueue stages one OutboxMessage row; optional MishimaWriteTransaction defers persistence until the host unit of work commits.
|
14 |
|
Robotico.Outbox.MishimaDocs
IOutbox backed by MishimaDocs. Enqueue writes one JSON document per message; optional IMishimaWriteBatch defers persistence until CommitAsync.
|
13 |
|
Robotico.Outbox.InMemory
In-memory IOutbox with preserved enqueue order for tests and single-process scenarios. Depends on Robotico.Outbox, Robotico.Result.
|
11 |
|
MishimaWf.AspNetCore
MishimaWf ASP.NET Core host integration.
|
8 |
|
MishimaWf.AspNetCore
MishimaWf ASP.NET Core host integration.
|
7 |
|
MishimaWf.AspNetCore
MishimaWf ASP.NET Core host integration.
|
6 |
|
Robotico.Outbox.MishimaDocs
IOutbox backed by MishimaDocs. Enqueue writes one JSON document per message; optional IMishimaWriteBatch defers persistence until CommitAsync.
|
4 |
|
Robotico.Outbox.CosmosDb
IOutbox with outbox container in Cosmos; same transaction scope. Depends on Robotico.Outbox, Robotico.Result, Microsoft.Azure.Cosmos.
|
3 |
|
Robotico.Outbox.EntityFrameworkCore
IOutbox with outbox table in same DbContext; optional background processor. Depends on Robotico.Outbox, Robotico.Result, Microsoft.EntityFrameworkCore.
|
3 |
|
Robotico.Outbox.MongoDb
IOutbox with outbox collection in same MongoDB; optional background processor. Depends on Robotico.Outbox, Robotico.Result, MongoDB.Driver.
|
3 |
|
Robotico.Outbox.MishimaDb
IOutbox backed by MishimaDb logical-type rows. Enqueue stages one OutboxMessage row; optional MishimaWriteTransaction defers persistence until the host unit of work commits.
|
3 |
|
MishimaWf.AspNetCore
MishimaWf ASP.NET Core host integration.
|
3 |
|
MishimaWf.AspNetCore
MishimaWf ASP.NET Core host integration.
|
2 |
|
Robotico.Outbox.CosmosDb
IOutbox with outbox container in Cosmos; same transaction scope. Depends on Robotico.Outbox, Robotico.Result, Microsoft.Azure.Cosmos.
|
2 |
|
Robotico.Outbox.EntityFrameworkCore
IOutbox with outbox table in same DbContext; optional background processor. Depends on Robotico.Outbox, Robotico.Result, Microsoft.EntityFrameworkCore.
|
2 |