Module: HireFire::Macro::Que

Extended by:
Que
Included in:
Que
Defined in:
lib/hirefire/macro/que.rb

Constant Summary collapse

QUERY =
%{
SELECT count(*)                                                          AS total,
       count(locks.job_id)                                               AS running,
       coalesce(sum((error_count > 0 AND locks.job_id IS NULL)::int), 0) AS failing,
       coalesce(sum((error_count = 0 AND locks.job_id IS NULL)::int), 0) AS scheduled
FROM que_jobs LEFT JOIN (
  SELECT (classid::bigint << 32) + objid::bigint AS job_id
  FROM pg_locks WHERE locktype = 'advisory'
) locks USING (job_id) }.freeze

Instance Method Summary collapse

Instance Method Details

#queue(queue = nil) ⇒ Integer

Queries the PostgreSQL database through Que in order to count the amount of jobs in the specified queue.

Examples:

Queue Macro Usage

HireFire::Macro::Que.queue # counts all queues.
HireFire::Macro::Que.queue("email") # counts the `email` queue.

Parameters:

  • queue (String) (defaults to: nil)

    the queue name to count. (default: nil # gets all queues)

Returns:

  • (Integer)

    the number of jobs in the queue(s).



28
29
30
31
32
# File 'lib/hirefire/macro/que.rb', line 28

def queue(queue = nil)
  query = queue ? "#{QUERY} WHERE queue = '#{queue}'" : QUERY
  results = ::Que.execute(query).first
  results["total"].to_i - results["failing"].to_i
end