class Wisper::SidekiqBroadcaster

based on Sidekiq 4.x delay method, which is not enabled by default in Sidekiq 5.x github.com/mperham/sidekiq/blob/4.x/lib/sidekiq/extensions/generic_proxy.rb github.com/mperham/sidekiq/blob/4.x/lib/sidekiq/extensions/class_methods.rb

Public Class Methods

register() click to toggle source
# File lib/wisper/sidekiq.rb, line 22
def self.register
  Wisper.configure do |config|
    config.broadcaster :sidekiq, SidekiqBroadcaster.new
    config.broadcaster :async,   SidekiqBroadcaster.new
  end
end

Public Instance Methods

broadcast(subscriber, publisher, event, args) click to toggle source
# File lib/wisper/sidekiq.rb, line 29
def broadcast(subscriber, publisher, event, args)
  options = sidekiq_options(subscriber)
  schedule_options = sidekiq_schedule_options(subscriber, event)

  Worker.set(options).perform_in(
    schedule_options.fetch(:delay, 0),
    ::YAML.dump([subscriber, event, args])
  )
end

Private Instance Methods

delay_option(options) click to toggle source
# File lib/wisper/sidekiq.rb, line 57
def delay_option(options)
  return {} unless options.key?(:perform_in) || options.key?(:perform_at)

  { delay: options[:perform_in] || options[:perform_at] }
end
sidekiq_options(subscriber) click to toggle source
# File lib/wisper/sidekiq.rb, line 41
def sidekiq_options(subscriber)
  subscriber.respond_to?(:sidekiq_options) ? subscriber.sidekiq_options : {}
end
sidekiq_schedule_options(subscriber, event) click to toggle source
# File lib/wisper/sidekiq.rb, line 45
def sidekiq_schedule_options(subscriber, event)
  return {} unless subscriber.respond_to?(:sidekiq_schedule_options)

  options = subscriber.sidekiq_schedule_options

  if options.has_key?(event.to_sym)
    delay_option(options[event.to_sym])
  else
    delay_option(options)
  end
end