Module: HireFire::Macro::Sidekiq

Extended by:
Sidekiq
Included in:
Sidekiq
Defined in:
lib/hirefire/macro/sidekiq.rb

Instance Method Summary collapse

Instance Method Details

#queue(*queues) ⇒ Integer

Counts the amount of jobs in the (provided) Sidekiq queue(s).

Examples:

Sidekiq Macro Usage

HireFire::Macro::Sidekiq.queue # all queues
HireFire::Macro::Sidekiq.queue("email") # only email queue
HireFire::Macro::Sidekiq.queue("audio", "video") # audio and video queues

Parameters:

  • queues (Array)

    provide one or more queue names, or none for “all”.

Returns:

  • (Integer)

    the number of jobs in the queue(s).



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/hirefire/macro/sidekiq.rb', line 18

def queue(*queues)
  queues = queues.flatten.map(&:to_s)
  queues = ::Sidekiq::Stats.new.queues.map { |name, _| name } if queues.empty?

  in_queues = queues.inject(0) do |memo, name|
    memo += ::Sidekiq::Queue.new(name).size
    memo
  end

  in_progress = ::Sidekiq::Workers.new.inject(0) do |memo, job|
    memo += 1 if queues.include?(job[1]["queue"]) && job[1]["run_at"] <= Time.now.to_i
    memo
  end

  in_queues + in_progress
end