Skip to content
Art2link ESB v2.02 LTS HomeDocumentationBlogContact
Patterns/Foundational messaging/Guaranteed delivery

Guaranteed delivery

Once the bus accepts a message, it will not be lost. It is persisted before delivery, and the send port keeps trying until the destination acknowledges — through outages, restarts and slow partners.

When a canonical message is published, the bus writes it to durable storage before any send port attempts delivery. If the destination is down, the send port retries; if the platform itself restarts mid-flight, delivery resumes from the persisted copy. Nothing depends on a message being held only in memory.

Bus (persisted) written before send Send port retry until ack retry loop Destination — offline Destination — online ACK message cleared

The guarantee is at-least-once, not exactly-once: a delivery that succeeds but whose acknowledgement is lost will be retried, so the same message can arrive twice. That is the deliberate trade — the bus would rather deliver again than lose your data.

Always pair with idempotency. Because guaranteed delivery can redeliver, every consumer should be an idempotent receiver. See also idempotent by design.