Skip to content
Archived Docsv26.7.1

Dispatch Substrates

Dispatch substrate is the mechanism used to move a TPF command, payload, or envelope across a boundary.

It is not the same decision as transport mode, platform mode, runtime layout, or payload policy.

Substrate Matrix

SubstrateBest fitCaution
Localtests, demos, monoliths, low-friction adoptionno crash-surviving handoff by itself
RESTsimple request/response step hosts and transition workersimmediate call semantics; not durable buffering
gRPCefficient typed request/response and protobuf contractsstill immediate unless paired with await/checkpoint semantics
SQSAWS-shaped durable coordinator dispatch, await request/completion queues, DLQ/re-drive, and queue-style self-host HAstandard queues only for SQS await v1; weaker ordering/grouping model than Kafka
Kafkaenterprise broker backbone, Kafka await, stream pressure boundaries, topic fan-out, retained event streams, and Kafka-native estatesdo not treat offsets as TPF replay semantics

Not transport: KAFKA Or transport: SQS

Do not flatten Kafka or SQS into the same top-level decision as REST or gRPC.

REST and gRPC are immediate call transports. Kafka and SQS are brokered dispatch substrates with different timing, correlation, retry, and ownership implications.

Prefer boundary-specific configuration shapes:

yaml
kind: await
await:
  transport:
    type: kafka
yaml
kind: await
await:
  transport:
    type: sqs
yaml
checkpoint:
  publish:
    target:
      kind: kafka

The checkpoint snippet is illustrative. Supported runtime configuration uses pipeline.handoff.bindings.<publication>.targets.<target>.* with kind=KAFKA and topic=<topic>.

properties
pipeline.orchestrator.dispatcher-provider=sqs

Kafka and SQS await are supported runtime adapters. Kafka checkpoint publication/subscription is supported as a broker-backed handoff provider. pipeline.orchestrator.dispatcher-provider=sqs is supported for queue-async work dispatch. Kafka dispatcher-provider examples remain design direction, not committed public API.

Relationship To Existing Work

This guide extends existing boundary seams:

Broker-backed await providers should extend these seams. They should not introduce an independent workflow engine inside TPF.

Pressure And Replay

Broker retention can help recover delivery. TPF replay still needs step identity, contract version, item lineage, fan-in completion, and cache/persistence policy.