Repository navigation
v1.1.0 — idempotent external event delivery
External event delivery deduplication
RaiseEvent supports a durable external delivery ID:
client.RaiseEvent(ctx, instanceID, "order.created",
api.WithEventPayload(payload),
api.WithExternalDeliveryID(messageID),
)SQLite and PostgreSQL deduplicate a repeated non-empty delivery ID per
(instanceID, eventName, deliveryID). A retry after a publisher crash succeeds
without appending a second EventRaised event.
PostgreSQL upgrade
Before enabling external delivery IDs, apply:
psql "$DATABASE_URL" -v ON_ERROR_STOP=1
-f docs/migrations/postgresql/v1.1.0_external_event_deliveries.sql
Apply the migration before deploying v1.1.0 servers, then enable publishers.
Older gRPC servers do not preserve the delivery-ID guarantee.
Compatibility
Existing RaiseEvent calls are unchanged. Explicitly empty delivery IDs are
rejected. Custom backends must implement backend.ExternalEventDeliveryBackend.