Skip to main content
Retries are normal in event systems. When a source supplies a stable event ID, route that ID through a Durable Object before appending the event. Serialized execution turns the check-and-mark operation into one consistency boundary.

Configure the object and Stream

Implement the consistency boundary

The same event ID always reaches the same object. Unrelated IDs scale across different objects automatically.
A Verglas Stream binding inside a Durable Object uses the host’s transactional storage.stream-send path, not an external HTTP request. The accepted-row mutation and publication are released through the same object event boundary; a failed publication does not silently mark the ID delivered. Preserve the event ID downstream as an additional idempotency key.

Retention choices

An indefinitely growing deduplication set is rarely necessary. Choose a policy that matches the source’s retry window:
  • Keep IDs forever when they represent immutable business transactions.
  • Store an expiration timestamp and use an alarm to delete old IDs when the source guarantees a bounded retry period.
  • Hash a tenant and time bucket into the object name when one ID per object is too fine-grained for your workload.
This is the Durable Object equivalent of keyed state in stream processors: the key determines the consistency boundary, but Verglas owns its placement and lifecycle.