LiteBus
CatalogIngress

Inbox Ingress Capability Catalog

Inbox ingress is the durable intake edge for commands. It receives broker deliveries, maps headers to inbox metadata, and writes InboxEnvelope rows through IInbox.AcceptAsync or IInbox.AcceptBatchAsync.

Ingress does not execute handlers. Handler execution starts later in the inbox processor.

Axis Flow

flowchart LR
  P[Publisher] --> B[Broker destination]
  B --> C[IMessageConsumer]
  C --> L[TransportInboxIngressConsumer]
  L --> H[TransportInboxIngressHandler]
  H --> I[IInbox Accept]
  I --> S[(Inbox store)]
  S --> PR[PipelinedInboxProcessor]
  PR --> D[IInboxDispatcher]

Packages

PackageDependency rolePurpose
LiteBus.Inbox.IngressFeature bridgeShared handler, consumer loop, mapper, ack policy, telemetry
LiteBus.Inbox.Ingress.AmqpFeature bridgeRabbitMQ and LavinMQ ingress adapter
LiteBus.Inbox.Ingress.KafkaFeature bridgeKafka ingress adapter
LiteBus.Inbox.Ingress.AzureServiceBusFeature bridgeService Bus ingress adapter
LiteBus.Inbox.Ingress.AwsSqsFeature bridgeSQS ingress adapter
LiteBus.Inbox.Ingress.InMemoryFeature bridgeIn-process ingress adapter for fast tests and local development

Capability Pages

IDNameMaturity
ingress.registrationInbox ingress registrationGA
ingress.transport-handlerTransport-to-inbox accept handlerGA
ingress.transport-consumerIngress background consumer loopGA
ingress.header-mappingWire header to accept metadataGA
ingress.safety-optionsIngress safety and authorization optionsGA
ingress.batch-acceptBatch inbox accept bufferingGA
ingress.host-loopHost loop and consumer enablementGA
ingress.ack-policyRequeue and discard policyGA
ingress.telemetryIngress OpenTelemetry metricsGA
ingress.amqpAMQP inbox ingressGA
ingress.kafkaKafka inbox ingressBeta
ingress.azure-service-busAzure Service Bus inbox ingressBeta
ingress.aws-sqsAWS SQS inbox ingressBeta
ingress.inmemoryIn-memory inbox ingressGA

Maturity and Rationale

BrokerMaturityWhy this tierMain current gaps
AMQPGADeepest live-broker ingress matrix and native queue declaration controlsRequeue-off poison drain still untested on RabbitMQ/LavinMQ
KafkaBetaEnd-to-end and failure paths existNo dedicated requeue-off matrix, no dedicated duplicate MessageId matrix, no explicit ack-failed metric assertion
AWS SQSBetaStrong ingress matrix, including requeue on/off and idempotency pathsAck-failed metric assertion and FIFO-specific semantics are not covered
Azure Service BusBetaEnd-to-end and failure coverage on emulator, plus requeue-enabled pathNo duplicate MessageId matrix, no requeue-off matrix, limited header edge-case matrix
InMemoryGA (test adapter)Fast deterministic matrix for shared ingress semanticsNot a cross-process transport, no broker-native edge semantics

Broker Parity Quick View

BehaviorAMQPKafkaAWS SQSAzure Service BusInMemory
Default RequeueOnFailuretruetruetruetruetrue
Exposes shared Safety optionsyesyesyesyesyes
Exposes batch accept through Safetyyesyesyesyesyes
Native receive controlAMQP prefetchnonereceive batch sizeprefetch and callback concurrencynone
Broker declaration options on ingress optionsyesnononono
Cross-broker identity and idempotency defaultsbroker-scopedbroker-scopedbroker-scopedbroker-scopedbroker-scoped

Test Executor Summary

ExecutorFolder scopeWhat it proves for ingress
LiteBus.Inbox.UnitTestsIngress/, Ingress/Amqp/Mapper, handler, consumer, ack policy, AMQP registration and AMQP handler mapping
LiteBus.Durable.IntegrationTestsIngress/<Broker>/, Registration/Broker end-to-end intake, failure handling, selected idempotency and requeue behavior, registration smoke
LiteBus.Storage.IntegrationTestsPostgreSql/AMQP ingress with PostgreSQL backing store and duplicate broker delivery idempotency

Coverage gaps described in broker pages follow the ingress matrix in Integration tests.

What Ingress Does Not Cover

LimitNotes
Event ingressIngress writes commands to inbox. Event publishing stays in outbox dispatch.
Exactly-once side effectsIntake is at-least-once with idempotent accept. Handler side effects still need application idempotency where required.
Broker health probesIngress registers background work. Health probes live in hosting and diagnostics modules.
One generic UseTransportIngressBroker adapters stay split by package to avoid pulling every SDK into every app.

Deep Docs

On this page