ID : dispatch.outbox.azure-service-bus
Name : Outbox Azure Service Bus dispatch
Maturity : GA
Summary : Publish leased outbox envelopes to Azure Service Bus with contract headers via UseAzureServiceBusDispatch.
Registers shared TransportOutboxDispatcher with Azure Service Bus transport. Outbox processor publication targets a queue or topic configured in TransportOutboxDispatcherOptions.DefaultDestination. Subject/route follows outbox topic metadata or contract name fallback.
Package Role LiteBus.Outbox.Dispatch.AzureServiceBusRegistration glue LiteBus.Outbox.DispatchShared dispatcher LiteBus.Transport.AzureServiceBusAzure SDK adapter
dispatch.transport-core
transport.azure-service-bus
durable-core.outbox
Default hook failure policy: CompleteDespiteHookFailure.
At-least-once publication semantics match other transport outbox adapters.
Abandon/requeue behavior applies on consumer side when downstream uses Service Bus ingress.
Does not implement Service Bus sessions or duplicate detection configuration.
Does not batch multiple outbox rows into one Service Bus message.
services. AddLiteBus ( litebus =>
{
litebus. AddAzureServiceBusTransport ( new AzureServiceBusTransportOptions
{
ConnectionString = "<namespace-connection-string>" ,
ClientId = "billing-outbox"
});
litebus. AddOutbox ( outbox =>
{
outbox. EnableOutboxProcessor ();
outbox. UseAzureServiceBusDispatch (
options =>
{
options.DefaultDestination = "events" ;
options.ResolveRoute = envelope => envelope.Topic ?? envelope.ContractName;
});
});
});
API Role OutboxModuleBuilder.UseAzureServiceBusDispatch(Action<TransportOutboxDispatcherOptions>)Registers outbox transport dispatcher that requires the root Azure Service Bus transport TransportOutboxDispatchModule.DefaultHookFailurePolicyDefaults to CompleteDespiteHookFailure TransportOutboxDispatcher.DispatchAsync(OutboxEnvelope, CancellationToken)Publishes outbox envelope with canonical headers
AzureServiceBusTransportOptions:
Property Default Role ConnectionStringrequired Service Bus namespace connection ClientIdnullSDK client identifier ConsumerErrorRetryInterval00:00:05Base restart delay ConsumerErrorRetryMaxInterval00:01:00Max restart delay
Signal Detail send {destination}Service Bus send span with destination and subject route litebus.transport.circuit_breaker.*Tag azure_service_bus litebus.outbox.processor.published / failed / dead_letteredProcessor terminal counters litebus.outbox.processor.dispatch_durationHistogram including Service Bus SDK send time
Test method Project OutboxDispatchExtensions_ShouldRegisterTransportDispatcherLiteBus.Durable.IntegrationTests (Registration/)ProcessPendingAsync_ShouldPublishEnvelopeToServiceBusQueueLiteBus.Durable.IntegrationTests (Dispatch/Outbox/AzureServiceBus/) (emulator)ProcessPendingAsync_WhenTopicMissing_ShouldUseContractNameAsRouteLiteBus.Durable.IntegrationTests (Dispatch/Outbox/AzureServiceBus/)
CompleteDespiteHookFailure path with after-dispatch hook failure.
Unreachable namespace and breaker-open dispatch behavior.
Session and duplicate detection interactions.
Service Bus session semantics and broker duplicate detection
Batching multiple outbox rows into one Service Bus message