Interface ICommandOutboxDispatcher
- Namespace
- Stratara.Abstractions.Outbox
- Assembly
- Stratara.Abstractions.dll
Enqueues commands for asynchronous out-of-process execution by the command-handling worker. Implementations first try direct publish (fast path) and fall back to the outbox table if the bus is unreachable.
public interface ICommandOutboxDispatcher
- Extension Methods
Examples
Dispatch a fire-and-forget mutation from an API endpoint:
public sealed record PlaceOrder(Guid OrderId, Guid CustomerId, decimal Amount) : ICommand;
app.MapPost("/orders", async (PlaceOrder command, ICommandOutboxDispatcher dispatcher, CancellationToken ct) =>
{
var envelopeId = await dispatcher.EnqueueCommandAsync(command, ct);
return Results.Accepted($"/orders/{command.OrderId}", new { envelopeId });
});
Methods
EnqueueCommandAsync<T>(T, CancellationToken)
Enqueue command for asynchronous dispatch.
Task<Guid> EnqueueCommandAsync<T>(T command, CancellationToken cancellationToken = default) where T : ICommand
Parameters
commandTThe command to dispatch.
cancellationTokenCancellationTokenPropagated to the bus / outbox write.
Returns
Type Parameters
TThe concrete command type.
EnqueueOutboxEntriesAsync(IEnumerable<OutboxEntry>, CancellationToken)
Drain previously-persisted outboxEntries by attempting to
publish each one and deleting on success. Used by the outbox worker.
Task EnqueueOutboxEntriesAsync(IEnumerable<OutboxEntry> outboxEntries, CancellationToken cancellationToken = default)
Parameters
outboxEntriesIEnumerable<OutboxEntry>cancellationTokenCancellationToken