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