module HireFire::Macro::GoodJob
Public Instance Methods
Source
# File lib/hirefire/macro/good_job.rb, line 26 def job_queue_latency(*queues) queues = normalize_queues(queues, allow_empty: true) query = good_job_class query = query.where(queue_name: queues) if queues.any? query = query.where(performed_at: nil) query = query.where.not(error_event: discarded_enum).or(query.where(error_event: nil)) if error_event_supported? query = query.where(scheduled_at: ..Time.now).or(query.where(scheduled_at: nil)) query = query.order(scheduled_at: :asc, created_at: :asc) if (job = query.first) Time.now - (job.scheduled_at || job.created_at) else 0.0 end end
Calculates the maximum job queue latency using GoodJob
. If no queues are specified, it measures latency across all available queues.
@param queues [Array<String, Symbol>] (optional) Names of the queues for latency
measurement. If not provided, latency is measured across all queues.
@return [Float] Maximum job queue latency in seconds. @example Calculate latency across all queues
HireFire::Macro::GoodJob.job_queue_latency
@example Calculate latency for the “default” queue
HireFire::Macro::GoodJob.job_queue_latency(:default)
@example Calculate latency across “default” and “mailer” queues
HireFire::Macro::GoodJob.job_queue_latency(:default, :mailer)
Source
# File lib/hirefire/macro/good_job.rb, line 54 def job_queue_size(*queues) queues = normalize_queues(queues, allow_empty: true) query = good_job_class query = query.where(queue_name: queues) if queues.any? query = query.where(performed_at: nil) query = query.where.not(error_event: discarded_enum).or(query.where(error_event: nil)) if error_event_supported? query = query.where(scheduled_at: ..Time.now).or(query.where(scheduled_at: nil)) query.count end
Calculates the total job queue size using GoodJob
. If no queues are specified, it measures size across all available queues.
@param queues [Array<String, Symbol>] (optional) Names of the queues for size measurement.
If not provided, size is measured across all queues.
@return [Integer] Total job queue size. @example Calculate size across all queues
HireFire::Macro::GoodJob.job_queue_size
@example Calculate size for the “default” queue
HireFire::Macro::GoodJob.job_queue_size(:default)
@example Calculate size across “default” and “mailer” queues
HireFire::Macro::GoodJob.job_queue_size(:default, :mailer)