When the caller does not need an answer, publish an event and move on — decoupling, replay, and the delivery guarantees you actually get.
At-least-once, not exactly-once
Platform events can be delivered more than once and subscribers can fall behind. Design subscribers to be idempotent and the guarantee becomes a feature, not a caveat.
The replay Id is your safety net
External subscribers can resume from the last replay Id after a disconnect. Store it; the day your middleware restarts mid-stream you will be glad you did.
Practice in your org
- Open your Developer Edition org and follow along step by step
- Change one thing at a time and note what happens
- When something breaks, read the error before searching for it