Skip to content

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 only. Current supported checkpoint handoff target configuration uses pipeline.handoff.bindings.<publication>.targets.<target>.*, and broker-backed KAFKA publication targets are not supported yet.

properties
pipeline.orchestrator.dispatcher-provider=sqs

Kafka and SQS await are supported runtime adapters. pipeline.orchestrator.dispatcher-provider=sqs is supported for queue-async work dispatch. Kafka checkpoint publication and 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.