class Shoryuken::DefaultWorkerRegistry
Public Class Methods
new()
click to toggle source
# File lib/shoryuken/default_worker_registry.rb, line 3 def initialize @workers = Concurrent::Hash.new end
Public Instance Methods
batch_receive_messages?(queue)
click to toggle source
# File lib/shoryuken/default_worker_registry.rb, line 7 def batch_receive_messages?(queue) !!(@workers[queue] && @workers[queue].get_shoryuken_options['batch']) end
clear()
click to toggle source
# File lib/shoryuken/default_worker_registry.rb, line 11 def clear @workers.clear end
fetch_worker(queue, message)
click to toggle source
# File lib/shoryuken/default_worker_registry.rb, line 15 def fetch_worker(queue, message) worker_class = !message.is_a?(Array) && message.message_attributes && message.message_attributes['shoryuken_class'] && message.message_attributes['shoryuken_class'][:string_value] worker_class = begin worker_class.constantize rescue @workers[queue] end worker_class.new if worker_class end
queues()
click to toggle source
# File lib/shoryuken/default_worker_registry.rb, line 30 def queues @workers.keys end
register_worker(queue, clazz)
click to toggle source
# File lib/shoryuken/default_worker_registry.rb, line 34 def register_worker(queue, clazz) if (worker_class = @workers[queue]) if worker_class.get_shoryuken_options['batch'] == true || clazz.get_shoryuken_options['batch'] == true fail ArgumentError, "Could not register #{clazz} for #{queue}, "\ "because #{worker_class} is already registered for this queue, "\ "and Shoryuken doesn't support a batchable worker for a queue with multiple workers" end end @workers[queue] = clazz end
workers(queue)
click to toggle source
# File lib/shoryuken/default_worker_registry.rb, line 46 def workers(queue) [@workers.fetch(queue, [])].flatten end