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 ​
| Substrate | Best fit | Caution |
|---|---|---|
| Local | tests, demos, monoliths, low-friction adoption | no crash-surviving handoff by itself |
| REST | simple request/response step hosts and transition workers | immediate call semantics; not durable buffering |
| gRPC | efficient typed request/response and protobuf contracts | still immediate unless paired with await/checkpoint semantics |
| SQS | AWS-shaped durable coordinator dispatch, await request/completion queues, DLQ/re-drive, and queue-style self-host HA | standard queues only for SQS await v1; weaker ordering/grouping model than Kafka |
| Kafka | enterprise broker backbone, Kafka await, stream pressure boundaries, topic fan-out, retained event streams, and Kafka-native estates | do 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:
kind: await
await:
transport:
type: kafkakind: await
await:
transport:
type: sqscheckpoint:
publish:
target:
kind: kafkaThe 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.
pipeline.orchestrator.dispatcher-provider=sqsKafka 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:
- Step-Aware Invocation Runtime defines shared invocation points for step, transition-worker, and transport-boundary execution.
- Worker Protocols already model transition-worker command/result envelopes over local, REST, gRPC, and SQS.
- Await Unit Runtime defines durable suspend/resume semantics that can use different transports.
- Checkpoint Handoff is the natural user-facing shape for pipeline-to-pipeline publication.
- Runtime Core Decoupling keeps runtime-adapter concerns out of core semantics.
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.