EctoPGMQ.Metrics (ecto_pgmq v2.0.0)

Copy Markdown View Source

Read-only schema for PGMQ queue metrics.

Summary

Types

t()

PGMQ queue metrics.

Functions

Returns a query for queue metrics.

Types

t()

@type t() :: %EctoPGMQ.Metrics{
  lifetime_messages: non_neg_integer(),
  newest_message_age: Duration.t() | nil,
  oldest_message_age: Duration.t() | nil,
  queue: EctoPGMQ.Queue.name(),
  requested_at: DateTime.t(),
  total_messages: non_neg_integer(),
  visible_messages: non_neg_integer()
}

PGMQ queue metrics.

Functions

query()

@spec query() :: Ecto.Query.t()

Returns a query for queue metrics.

Metrics are fetched transparently when querying queues via EctoPGMQ.Queue.query/0.

Message Age Filtering

This schema uses a custom Ecto.Type to load the message age fields into a Duration.t/0. This custom type can cast both Duration.t/0 structs and non_neg_integer/0 times (in seconds):

# Casting a Duration struct
where(Metrics.query(), [m], m.oldest_message_age >= ^Duration.new!(hour: 1))

# Casting an integer time
where(Metrics.query(), [m], m.newest_message_age <= 30)

Examples

iex> [%Metrics{} | _] = Repo.all(Metrics.query())