Class: Shoryuken::DefaultWorkerRegistry
- Inherits:
-
WorkerRegistry
- Object
- WorkerRegistry
- Shoryuken::DefaultWorkerRegistry
- Defined in:
- lib/shoryuken/default_worker_registry.rb
Instance Method Summary collapse
- #batch_receive_messages?(queue) ⇒ Boolean
- #clear ⇒ Object
- #fetch_worker(queue, message) ⇒ Object
-
#initialize ⇒ DefaultWorkerRegistry
constructor
A new instance of DefaultWorkerRegistry.
- #queues ⇒ Object
- #register_worker(queue, clazz) ⇒ Object
- #workers(queue) ⇒ Object
Constructor Details
#initialize ⇒ DefaultWorkerRegistry
Returns a new instance of DefaultWorkerRegistry.
5 6 7 |
# File 'lib/shoryuken/default_worker_registry.rb', line 5 def initialize @workers = Shoryuken::Helpers::AtomicHash.new end |
Instance Method Details
#batch_receive_messages?(queue) ⇒ Boolean
9 10 11 |
# File 'lib/shoryuken/default_worker_registry.rb', line 9 def (queue) !!(@workers[queue] && @workers[queue].['batch']) end |
#clear ⇒ Object
13 14 15 |
# File 'lib/shoryuken/default_worker_registry.rb', line 13 def clear @workers.clear end |
#fetch_worker(queue, message) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/shoryuken/default_worker_registry.rb', line 17 def fetch_worker(queue, ) worker_class = !.is_a?(Array) && . && .['shoryuken_class'] && .['shoryuken_class'][:string_value] worker_class = begin Shoryuken::Helpers::StringUtils.constantize(worker_class) rescue @workers[queue] end worker_class.new if worker_class end |
#queues ⇒ Object
32 33 34 |
# File 'lib/shoryuken/default_worker_registry.rb', line 32 def queues @workers.keys end |
#register_worker(queue, clazz) ⇒ Object
36 37 38 39 40 41 42 43 44 |
# File 'lib/shoryuken/default_worker_registry.rb', line 36 def register_worker(queue, clazz) if (worker_class = @workers[queue]) && (worker_class.['batch'] == true || clazz.['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 @workers[queue] = clazz end |
#workers(queue) ⇒ Object
46 47 48 |
# File 'lib/shoryuken/default_worker_registry.rb', line 46 def workers(queue) [@workers.fetch(queue, [])].flatten end |