Class: Qyu::Queue::Memory::Adapter
- Defined in:
- lib/qyu/queue/memory/adapter.rb
Constant Summary collapse
- TYPE =
:memory
Class Method Summary collapse
Instance Method Summary collapse
- #acknowledge_message(_queue_name, message_id) ⇒ Object
- #enqueue_task(queue_name, task_id) ⇒ Object
- #enqueue_task_to_failed_queue(queue_name, task_id) ⇒ Object
-
#fetch_next_message(queue_name) ⇒ Hash
fetch_next_message.
-
#initialize(_config) ⇒ Adapter
constructor
A new instance of Adapter.
- #queues ⇒ Object
- #size(queue_name) ⇒ Object
Methods inherited from Base
Constructor Details
#initialize(_config) ⇒ Adapter
Returns a new instance of Adapter.
9 10 11 12 13 |
# File 'lib/qyu/queue/memory/adapter.rb', line 9 def initialize(_config) @temp_store = Hash.new(false) @queues = {} @threads = [] end |
Class Method Details
.valid_config?(_config) ⇒ Boolean
15 16 17 18 |
# File 'lib/qyu/queue/memory/adapter.rb', line 15 def self.valid_config?(_config) # TODO true end |
Instance Method Details
#acknowledge_message(_queue_name, message_id) ⇒ Object
47 48 49 |
# File 'lib/qyu/queue/memory/adapter.rb', line 47 def (_queue_name, ) @temp_store[] = true end |
#enqueue_task(queue_name, task_id) ⇒ Object
20 21 22 |
# File 'lib/qyu/queue/memory/adapter.rb', line 20 def enqueue_task(queue_name, task_id) queue(queue_name) << { 'task_id' => task_id } end |
#enqueue_task_to_failed_queue(queue_name, task_id) ⇒ Object
24 25 26 27 |
# File 'lib/qyu/queue/memory/adapter.rb', line 24 def enqueue_task_to_failed_queue(queue_name, task_id) failed_queue_name = queue_name + '-failed' enqueue_task(failed_queue_name, task_id) end |
#fetch_next_message(queue_name) ⇒ Hash
fetch_next_message
TODO Note the uglyness in ‘while … empty?`; it’s because of reasons mainly for this (stackoverflow.com/q/11660253) reason.
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/qyu/queue/memory/adapter.rb', line 36 def (queue_name) sleep(1) while queue(queue_name).empty? = queue(queue_name).pop(true) = Qyu::Utils.uuid schedule_requeue(, , queue_name) { 'id' => , 'task_id' => ['task_id'] } end |
#queues ⇒ Object
51 52 53 54 55 |
# File 'lib/qyu/queue/memory/adapter.rb', line 51 def queues @queues.map do |name, queue| { name: name, messages: queue&.size } end end |
#size(queue_name) ⇒ Object
57 58 59 |
# File 'lib/qyu/queue/memory/adapter.rb', line 57 def size(queue_name) queue(queue_name).size end |