class GameQueue

Либа, добавляет и ивлекает сообщения из общей глобальной очереди сообщений В конфиге: GameQueue.redis = $redis GameQueue.queue_name = ‘skyburg_main_queue’

Добавление сообщений GameQueue.push(:combat_created, {some: ‘fucking’, super: ‘params’})

Получение сообещений GameQueue.pop

Attributes

queue_name[RW]
redis[RW]

Public Class Methods

method_missing(method_name, *params) click to toggle source
# File lib/game-queue.rb, line 16
def self.method_missing(method_name, *params)
  instance.send(method_name, *params)
end

Public Instance Methods

async_push(*params) click to toggle source

См. push

# File lib/game-queue.rb, line 38
def async_push(*params)
  async_push_with_delay(0, params)
end
async_push_with_delay(delay, *params) click to toggle source

Сделать отложенный асинхронный push

Parameters

delay<Integer>

время задержки в секундах

params (См. push)

# File lib/game-queue.rb, line 33
def async_push_with_delay(delay, *params)
  Thread.new { sleep delay; push *params }
end
clean!() click to toggle source

Description

очищает всю очередь

# File lib/game-queue.rb, line 52
def clean!
  redis.del(queue_name)
end
pop() click to toggle source

Returns

<Array[String, Object, Integer]>
# File lib/game-queue.rb, line 45
def pop
  result = redis.rpop(queue_name)
  Marshal.load(result) if result
end
push(message_name, message_body, errors_counter = 0) click to toggle source

Parameters

message_name<String>: тип сообщения

message_body<Object>

любой ruby объект с простыми данными, хэш, массив, число, строка…

errors_counter<Integer>

счетчик ошибок, которые возникают при попытке обработать взятую из очереди запись

если запись после этого снова возвращается в очередь, его следует увеличить.

# File lib/game-queue.rb, line 25
def push(message_name, message_body, errors_counter = 0)
  redis.lpush(queue_name, Marshal.dump([message_name.to_s, message_body, errors_counter]))
end