Dead-letter storage and replay control plane for terminal outbound failures.
Dead-letter records are written when outbound gateway work reaches terminal
failure paths (including explicit load shedding). Replay execution is
partitioned by dead-letter id via Jido.Messaging.DeadLetter.ReplayWorker.
Summary
Functions
Archive a dead-letter record.
Capture a terminal outbound failure into dead-letter storage.
Returns a specification to start this module under a supervisor.
Returns dead-letter configuration for a messaging instance.
Get a dead-letter record by id.
List dead-letter records.
Purge dead-letter records.
Replay a dead-letter record through partitioned replay workers.
Returns the registry used by replay workers for an instance module.
Returns the registered replay supervisor name for an instance module.
Returns the registered dead-letter server name for an instance module.
Types
@type record() :: %{ id: String.t(), instance_module: module(), status: record_status(), source: :outbound_gateway, inserted_at: DateTime.t(), updated_at: DateTime.t(), category: Jido.Messaging.OutboundGateway.error_category(), disposition: :retry | :terminal, reason: term(), retryable: boolean(), attempt: pos_integer() | nil, max_attempts: pos_integer() | nil, partition: non_neg_integer() | nil, routing_key: String.t() | nil, correlation_id: term(), idempotency_key: String.t() | nil, request: map(), diagnostics: map(), replay: replay_metadata() }
@type record_status() :: :active | :archived
@type replay_metadata() :: %{ status: replay_status(), attempts: non_neg_integer(), last_attempt_at: DateTime.t() | nil, last_outcome: :ok | :error | nil, last_result: term() | nil }
@type replay_response() :: %{status: :already_replayed, record: record()} | %{ status: :replayed, response: Jido.Messaging.OutboundGateway.success_response(), record: record() }
@type replay_status() :: :never | :running | :succeeded | :failed
@type state() :: %{ instance_module: module(), max_records: pos_integer(), records: %{optional(String.t()) => record()}, order: [String.t()] }
Functions
Archive a dead-letter record.
@spec capture_outbound_failure(module(), map(), map(), map()) :: {:ok, record()} | {:error, :unavailable}
Capture a terminal outbound failure into dead-letter storage.
Returns a specification to start this module under a supervisor.
See Supervisor.
Returns dead-letter configuration for a messaging instance.
Get a dead-letter record by id.
List dead-letter records.
Options:
:status-:active,:archived, or:all(default::all):limit- positive integer limit
@spec purge( module(), keyword() ) :: {:ok, non_neg_integer()} | {:error, :unavailable}
Purge dead-letter records.
Options:
:status-:active,:archived, or:all(default::archived):older_than_ms- only purge records older than this age
@spec replay(module(), String.t(), keyword()) :: {:ok, replay_response()} | {:error, term()}
Replay a dead-letter record through partitioned replay workers.
Returns the registry used by replay workers for an instance module.
Returns the registered replay supervisor name for an instance module.
Returns the registered dead-letter server name for an instance module.