Class: GameQueue
Overview
Либа, добавляет и ивлекает сообщения из общей глобальной очереди сообщений В конфиге: GameQueue.redis = $redis GameQueue.queue_name = ‘skyburg_main_queue’
Добавление сообщений GameQueue.push(:combat_created, ‘fucking’, super: ‘params’)
Получение сообещений GameQueue.pop
Instance Attribute Summary collapse
-
#queue_name ⇒ Object
Returns the value of attribute queue_name.
-
#redis ⇒ Object
Returns the value of attribute redis.
Class Method Summary collapse
Instance Method Summary collapse
-
#async_push(*params) ⇒ Object
См.
-
#async_push_with_delay(delay, *params) ⇒ Object
- Сделать отложенный асинхронный push ==== Parameters delay<Integer>
-
время задержки в секундах params (См. push).
-
#clean! ⇒ Object
Description очищает всю очередь.
-
#pop ⇒ Object
Returns <Array[String, Object, Integer]>::.
-
#push(message_name, message_body, errors_counter = 0) ⇒ Object
Parameters message_name<String>: тип сообщения message_body<Object>:: любой ruby объект с простыми данными, хэш, массив, число, строка…
Instance Attribute Details
#queue_name ⇒ Object
Returns the value of attribute queue_name.
15 16 17 |
# File 'lib/game-queue.rb', line 15 def queue_name @queue_name end |
#redis ⇒ Object
Returns the value of attribute redis.
15 16 17 |
# File 'lib/game-queue.rb', line 15 def redis @redis end |
Class Method Details
.method_missing(method_name, *params) ⇒ Object
17 18 19 |
# File 'lib/game-queue.rb', line 17 def self.method_missing(method_name, *params) instance.send(method_name, *params) end |
Instance Method Details
#async_push(*params) ⇒ Object
См. push
39 40 41 |
# File 'lib/game-queue.rb', line 39 def async_push(*params) async_push_with_delay(0, params) end |
#async_push_with_delay(delay, *params) ⇒ Object
Сделать отложенный асинхронный push
Parameters
- delay<Integer>
-
время задержки в секундах
params (См. push)
34 35 36 |
# File 'lib/game-queue.rb', line 34 def async_push_with_delay(delay, *params) Thread.new { sleep delay; push *params } end |
#clean! ⇒ Object
Description
очищает всю очередь
53 54 55 |
# File 'lib/game-queue.rb', line 53 def clean! redis.del(queue_name) end |
#pop ⇒ Object
Returns
- <Array[String, Object, Integer]>
46 47 48 49 |
# File 'lib/game-queue.rb', line 46 def pop result = redis.rpop(queue_name) Marshal.load(result) if result end |
#push(message_name, message_body, errors_counter = 0) ⇒ Object
Parameters
message_name<String>: тип сообщения
- message_body<Object>
-
любой ruby объект с простыми данными, хэш, массив, число, строка…
- errors_counter<Integer>
-
счетчик ошибок, которые возникают при попытке обработать взятую из очереди запись
если запись после этого снова возвращается в очередь, его следует увеличить.
26 27 28 |
# File 'lib/game-queue.rb', line 26 def push(, , errors_counter = 0) redis.lpush(queue_name, Marshal.dump([.to_s, , errors_counter])) end |