BroadwayPgQue.Client (broadway_pgque v0.1.0)

Copy Markdown View Source

Lightweight Postgres client executing PgQue queue operations for Broadway.

Supports shared Ecto repositories, direct Postgrex connection PIDs, and dedicated connection pools.

Summary

Functions

Acknowledges and closes an active batch.

Ensures a PgQue queue exists and configures its ticker responsiveness.

Moves an event directly to the Dead-Letter Queue (DLQ).

Marks an event for retry after a delay in seconds.

Executes an arbitrary SQL query against an Ecto repo or Postgrex connection.

Receives a batch of messages from a queue for the given consumer.

Receives a batch of messages cooperatively as a subconsumer within a consumer group.

Sets a configuration parameter for a queue.

Registers a consumer subscription for a queue.

Types

consumer_name()

@type consumer_name() :: String.t() | atom()

queue_name()

@type queue_name() :: String.t() | atom()

repo_or_conn()

@type repo_or_conn() :: module() | pid() | atom()

Functions

ack(repo_or_conn, batch_id, opts \\ [])

@spec ack(repo_or_conn(), integer(), keyword()) :: {:ok, integer()} | {:error, term()}

Acknowledges and closes an active batch.

create_queue(repo_or_conn, queue_name, opts \\ [])

@spec create_queue(repo_or_conn(), queue_name(), keyword()) ::
  {:ok, term()} | {:error, term()}

Ensures a PgQue queue exists and configures its ticker responsiveness.

event_dead(repo_or_conn, batch_id, event_id, reason, opts \\ [])

@spec event_dead(repo_or_conn(), integer(), integer(), String.t(), keyword()) ::
  {:ok, integer()} | {:error, term()}

Moves an event directly to the Dead-Letter Queue (DLQ).

event_retry(repo_or_conn, batch_id, event_id, retry_seconds, opts \\ [])

@spec event_retry(repo_or_conn(), integer(), integer(), integer(), keyword()) ::
  {:ok, integer()} | {:error, term()}

Marks an event for retry after a delay in seconds.

query(repo_or_conn, sql, params \\ [], opts \\ [])

@spec query(repo_or_conn(), String.t(), [term()], keyword()) ::
  {:ok, Postgrex.Result.t()} | {:error, term()}

Executes an arbitrary SQL query against an Ecto repo or Postgrex connection.

receive(repo_or_conn, queue_name, consumer_name, max_return \\ 100, opts \\ [])

@spec receive(repo_or_conn(), queue_name(), consumer_name(), pos_integer(), keyword()) ::
  {:ok, {integer() | nil, [map()]}} | {:error, term()}

Receives a batch of messages from a queue for the given consumer.

receive_coop(repo_or_conn, queue_name, consumer_name, subconsumer_name, max_return \\ 100, opts \\ [])

@spec receive_coop(
  repo_or_conn(),
  queue_name(),
  consumer_name(),
  String.t(),
  pos_integer(),
  keyword()
) ::
  {:ok, {integer() | nil, [map()]}} | {:error, term()}

Receives a batch of messages cooperatively as a subconsumer within a consumer group.

set_queue_config(repo_or_conn, queue_name, param, value, opts \\ [])

@spec set_queue_config(
  repo_or_conn(),
  queue_name(),
  String.t(),
  String.t(),
  keyword()
) ::
  {:ok, term()} | {:error, term()}

Sets a configuration parameter for a queue.

subscribe(repo_or_conn, queue_name, consumer_name, opts \\ [])

@spec subscribe(repo_or_conn(), queue_name(), consumer_name(), keyword()) ::
  {:ok, integer()} | {:error, term()}

Registers a consumer subscription for a queue.