Skip to main content

Commands, messages, and receipts

Prepared Command​

A Prepared Command fixes the Route, physical partition, command identity, delayed-message identity, canonical body, hash, and retry boundary before network I/O. A physical enqueue retry reuses the exact prepared bytes and identity. A new business operation requires a new preparation; an uncertain enqueue is not permission to invent a new command ID.

The prepared representation is versioned and deterministic. This page focuses on lifecycle meaning rather than byte-level encoding.

Command versus Delayed Message​

A Command is an immutable request to Schedule, Cancel, Reschedule, or perform another registered operation. A Delayed Message exists only after its Schedule Command has been authoritatively applied. A queued or rejected Schedule does not by itself create a Delayed Message.

Outcome levels​

LevelMeaningWhat it does not prove
QUEUEDThe ingress Broker durably accepted the CommandThe Delay Shard applied it or created a message
APPLIED / REJECTEDThe Delay Shard durably recorded its authoritative resultA target producer published a destination record
PUBLISHEDThe destination Adapter has the capability-specific durable evidence for a target append or handoffUniversal exactly-once or consumer processing completion
UNCERTAINThe system cannot prove whether a producer-side operation became durableThat the target definitely did not receive the record

CommandQueuedReceipt and CommandAppliedReceipt are distinct. Query answers become conclusive only after the applicable Source Position barrier; a client-side timeout is not proof of non-persistence.

Managed and AUTO_FAST​

MANAGED is the default. It enters the Command Topic and supports query, cancellation, rescheduling, quota, audit, checkpoint, DLQ, and replay boundaries before the relevant point of no return.

AUTO_FAST is explicit caller permission for the SDK to choose, before any I/O, between an exact managed prepared command and a direct certified Pulsar native delivery. The selected sealed object is persisted and submitted as-is. Native I/O does not silently fall back to managed delivery; a response loss remains native uncertainty.