Skip to main content

Capabilities

Each transport declares the capabilities of each endpoint, because an SQS FIFO queue and a standard queue differ. A feature that needs a capability either uses the native mechanism or a documented core fallback. When there is neither, startup fails with a clear error. Relayer never degrades silently.

The core runs every fallback, so transports contain native code only.

The capability record​

TransportCapabilities is a sealed record with init-only values. A new record declares queue consumption, no optional features, no native delays and a maximum batch count of one.

PropertyMeaning
MaxDeliveryDelayLongest native scheduled delivery. null means no native scheduling.
MaxRedeliveryDelayLongest native delayed redelivery. TimeSpan.Zero means immediate redelivery only; null means none.
DeadLetterThe endpoint can dead-letter natively with error metadata.
OrderedByKeyThe endpoint preserves order per key (partition key, session, message group).
MaxBatchSizeNative batch count. Defaults to 1.
TransactionsNative transactions are available.
PauseResumeThe consumer can be paused and resumed natively.
ReplayThe endpoint supports seeking or replay.
MaxMessageBytesDeclared message size limit. null means not declared, not unlimited.
ConsumptionModelQueue or log-based consumption.

Native mechanisms and fallbacks​

FeatureNative when availableFallback
Delayed delivery / schedulingService Bus ScheduledEnqueueTime, SQS DelaySeconds on standard queues (up to 15 minutes; not on FIFO queues), RabbitMQ delayed-message pluginOutbox deliver_at
Delayed redelivery of a received messageSQS visibility timeout (up to 12 hours); immediate only: Service Bus abandon, RabbitMQ requeueScheduled re-send of a copy, else the outbox
Dead-letter with error metadataService Bus DLQ with propertiesSend a copy to the dead-letter endpoint (Kafka DLT topic, SQS DLQ queue), then complete
OrderingKafka partition key, Service Bus sessions, SQS FIFO message groupNone: the route must not declare an ordering key
BatchingKafka, SQS (10), Service Bus batchesClient-side batching
TransactionsKafka transactions, Service Bus cross-entity transactionsOutbox

Validation​

Before receive services start, the core asks each runtime adapter for the capabilities of every declared source and destination, once. It checks that delays are null or non-negative, batch counts are at least one, declared size limits are positive and every ordering key targets an OrderedByKey endpoint. Errors name the transport, route and endpoint, and recommend a fix. See Configuration for the full list.