lib/sidekiq/throttled.rb in sidekiq-throttled-0.5.0 vs lib/sidekiq/throttled.rb in sidekiq-throttled-0.6.0
- old
+ new
@@ -2,10 +2,12 @@
# 3rd party
require "sidekiq"
# internal
require "sidekiq/version"
+require "sidekiq/throttled/communicator"
+require "sidekiq/throttled/queues_pauser"
require "sidekiq/throttled/registry"
require "sidekiq/throttled/worker"
# @see https://github.com/mperham/sidekiq/
module Sidekiq
@@ -37,12 +39,16 @@
# end
# end
module Throttled
class << self
# Hooks throttler into sidekiq.
+ #
# @return [void]
def setup!
+ Communicator.instance.setup!
+ QueuesPauser.instance.setup!
+
Sidekiq.configure_server do |config|
require "sidekiq/throttled/fetch"
Sidekiq.options[:fetch] = Sidekiq::Throttled::Fetch
require "sidekiq/throttled/middleware"
@@ -50,12 +56,28 @@
chain.add Sidekiq::Throttled::Middleware
end
end
end
- # @param [String] message JSON payload of job
- # @return [TrueClass] if job is not allowed to be processed now
- # @return [FalseClass] otherwise
+ # (see QueuesPauser#pause!)
+ def pause!(queue)
+ QueuesPauser.instance.pause!(queue)
+ end
+
+ # (see QueuesPauser#resume!)
+ def resume!(queue)
+ QueuesPauser.instance.resume!(queue)
+ end
+
+ # (see QueuesPauser#paused_queues)
+ def paused_queues
+ QueuesPauser.instance.paused_queues
+ end
+
+ # Tells whenever job is throttled or not.
+ #
+ # @param [String] message Job's JSON payload
+ # @return [Boolean]
def throttled?(message)
message = JSON.parse message
job = message.fetch("class".freeze) { return false }
jid = message.fetch("jid".freeze) { return false }