LiteBus
CatalogTransport

Azure Service Bus Transport

  • ID: transport.azure-service-bus
  • Name: Azure Service Bus transport
  • Maturity: Beta
  • Summary: Azure Service Bus adapter with explicit message settlement and canonical property mapping.

What It Does

AzureServiceBusTransportModule registers AzureServiceBusPublisher and AzureServiceBusConsumer using Azure.Messaging.ServiceBus. Publish maps Destination to queue or topic and maps Route to Subject. Consume uses peek-lock with AutoCompleteMessages = false and explicit settlement delegates.

Beta tier note: adapter behavior is validated in durable integration tests, with optional live-connection coverage kept separate from emulator coverage.

Public Surface

Registration and Runtime Types

APIRole
AzureServiceBusTransportModuleRegisters Service Bus transport services
AzureServiceBusPublisher.PublishAsyncSends broker message
AzureServiceBusConsumer.StartAsyncRuns processor consume loop
AzureServiceBusMessageMapperMaps transport request and application properties
AzureServiceBusConnectivityDiagnosticCheckPeeks a configured entity for host readiness
AzureServiceBusDiagnosticTargetQueue or topic-subscription readiness target
LiteBusTransportAzureServiceBusTelemetry.MeterNameReserved Service Bus meter name

Options

PropertyDefaultPurpose
ConnectionStringrequiredService Bus connection
ClientIdnullService Bus client identifier
ConnectivityCheckTargetnullQueue or subscription peeked by readiness; missing reports degraded
ConsumerErrorRetryInterval5sBase restart delay after processor errors
ConsumerErrorRetryMaxInterval1mMax restart delay

Ack Mapping

Transport callService Bus action
AcceptAsyncCompleteMessageAsync
DiscardAsyncDeadLetterMessageAsync
ReturnToQueueAsyncAbandonMessageAsync

Packages

  • LiteBus.Transport.AzureServiceBus

Requires

  • transport.publish-consume-contracts
  • transport.manual-acknowledgement
  • transport.single-broker-registration
  • Service Bus namespace or emulator connection string

Invariants

  • Consumer uses manual settlement (AutoCompleteMessages = false).
  • Redelivery hint uses DeliveryCount > 1.
  • Circuit-breaker metrics register with broker tag azure_service_bus.

Non-Goals

  • Event Hubs support.
  • Entity topology and subscription provisioning.
  • Cross-region failover routing.

Observability

Metrics

ItemValue
Shared meterLiteBus.Transport
Broker taglitebus.transport.broker="azure_service_bus"
Shared gaugeslitebus.transport.circuit_breaker.open, litebus.transport.circuit_breaker.failure_count
Reserved adapter meterLiteBus.Transport.AzureServiceBus
OpenTelemetry registrationAddLiteBusTransportMetrics()

Tracing

  • Activity source LiteBus.Transport
  • Spans send {destination} and process {destination} with messaging.system=servicebus

Diagnostics

  • Diagnostic check id: transport.azure_service_bus.connectivity
  • AzureServiceBusQueueDiagnosticTarget peeks a queue.
  • AzureServiceBusSubscriptionDiagnosticTarget peeks a topic subscription.
  • The peek does not lock or settle messages. Grant entity listen permission. Missing target configuration reports degraded.
  • See the current PeekMessagesAsync contract.

Test Coverage

Covered

Test methodProject
Build_ShouldRejectDuplicateTransportRegistrationLiteBus.Transport.UnitTests (AzureServiceBus/)
Constructor_ShouldRejectEmptyConnectionStringLiteBus.Transport.UnitTests (AzureServiceBus/)
CheckAsync_WithoutTarget_ShouldReturnDegradedLiteBus.Transport.UnitTests (AzureServiceBus/)
PublishThroughServiceBus_ShouldAcceptProcessAndDispatchCommandLiteBus.Durable.IntegrationTests (Ingress/AzureServiceBus/)
PublishThroughServiceBus_ShouldAcceptProcessAndDispatchCommand readiness assertionLiteBus.Durable.IntegrationTests (Ingress/AzureServiceBus/)
RequeueEnabled_WithTransientStoreFailure_ShouldEventuallyAcceptLiteBus.Durable.IntegrationTests (Ingress/AzureServiceBus/)
ProcessPendingAsync_ShouldPublishEnvelopeToServiceBusQueueLiteBus.Durable.IntegrationTests (Dispatch/Outbox/AzureServiceBus/)
ProcessPendingAsync_ShouldPublishLeasedEnvelopeToServiceBusQueueLiteBus.Durable.IntegrationTests (Dispatch/Inbox/AzureServiceBus/)
ProcessPendingAsync_WithLiveConnection_ShouldPublishToAzureServiceBusQueueLiteBus.Durable.IntegrationTests (Ingress/AzureServiceBus/)

Untested

  • Raw Service Bus publisher and consumer tests outside durable wrappers.
  • Circuit-breaker-open dispatch scenarios for Service Bus path.
  • Gauge export assertions for broker tag azure_service_bus.

Out-of-Scope

  • Event Hubs and non-Service Bus SDKs.
  • Automatic topology management.

Deep Docs

On this page