Skip to main content

Inbox dedupe

Stream listeners write inbox_messages and return. InboxMessageWorker polls (SPLICK_INBOX_POLL_DELAY in shared config) and calls a handler.

Rules:

  • Store event_id and trace_id.
  • The handler's side effect is guarded by that event_id so a redelivery is a no-op.
  • Do not ack a stream entry you have not persisted.
  • A poison message goes to the retry or dead-letter path. It does not block the group forever without an alert. InboxBacklogHigh exists for that.

Notification-service also keeps inbox_state for its own push pipeline, which is separate from the shared inbox table used by domain consumers.