Read-only schema for PGMQ queue metrics.
Summary
Types
@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
@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())