evoq_dead_letter (evoq v1.9.2)
View SourceDead letter store for failed events.
Stores events that could not be processed after all retries. Provides API to: - Store failed events - List dead letter entries - Retry dead letter entries - Delete entries after successful reprocessing
Uses ETS for fast in-memory storage. For production, consider implementing a persistent store.
Summary
Functions
Get count of dead letter entries.
Delete a dead letter entry.
Get a specific dead letter entry by ID.
List all dead letter entries.
List dead letter entries with filters. Filters: - handler: Filter by handler module - since: Filter by created_at (milliseconds since epoch) - limit: Max number of entries to return
Retry a dead letter entry. Returns the event and handler for reprocessing.
Start the dead letter store.
Store a failed event in the dead letter queue.
Store a failed event with optional error reason.
Functions
-spec count() -> non_neg_integer().
Get count of dead letter entries.
-spec delete(binary()) -> ok | {error, not_found}.
Delete a dead letter entry.
-spec get(binary()) -> {ok, #evoq_dead_letter{id :: binary(), event :: map(), handler_module :: atom(), error :: term(), failure_context :: #evoq_failure_context{handler_module :: atom(), event :: map(), error :: term(), attempt_number :: pos_integer(), first_failure_at :: integer(), last_failure_at :: integer(), stacktrace :: list()}, created_at :: integer()}} | {error, not_found}.
Get a specific dead letter entry by ID.
-spec list() -> [#evoq_dead_letter{id :: binary(), event :: map(), handler_module :: atom(), error :: term(), failure_context :: #evoq_failure_context{handler_module :: atom(), event :: map(), error :: term(), attempt_number :: pos_integer(), first_failure_at :: integer(), last_failure_at :: integer(), stacktrace :: list()}, created_at :: integer()}].
List all dead letter entries.
-spec list(map()) -> [#evoq_dead_letter{id :: binary(), event :: map(), handler_module :: atom(), error :: term(), failure_context :: #evoq_failure_context{handler_module :: atom(), event :: map(), error :: term(), attempt_number :: pos_integer(), first_failure_at :: integer(), last_failure_at :: integer(), stacktrace :: list()}, created_at :: integer()}].
List dead letter entries with filters. Filters: - handler: Filter by handler module - since: Filter by created_at (milliseconds since epoch) - limit: Max number of entries to return
Retry a dead letter entry. Returns the event and handler for reprocessing.
Start the dead letter store.
-spec store(map(), atom(), #evoq_failure_context{handler_module :: atom(), event :: map(), error :: term(), attempt_number :: pos_integer(), first_failure_at :: integer(), last_failure_at :: integer(), stacktrace :: list()}) -> ok.
Store a failed event in the dead letter queue.
-spec store(map(), atom(), #evoq_failure_context{handler_module :: atom(), event :: map(), error :: term(), attempt_number :: pos_integer(), first_failure_at :: integer(), last_failure_at :: integer(), stacktrace :: list()}, term()) -> ok.
Store a failed event with optional error reason.