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_idandtrace_id. - The handler's side effect is guarded by that
event_idso 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.
InboxBacklogHighexists 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.