lib/game-queue.rb in game-queue-0.2.4 vs lib/game-queue.rb in game-queue-0.2.5

- old
+ new

@@ -19,21 +19,31 @@ end # ==== Parameters # message_name<String>: тип сообщения # message_body<Object>:: любой ruby объект с простыми данными, хэш, массив, число, строка... - def push(message_name, message_body) - redis.lpush(queue_name, Marshal.dump([message_name.to_s, message_body])) + # errors_counter<Integer>:: счетчик ошибок, которые возникают при попытке обработать взятую из очереди запись + # если запись после этого снова возвращается в очередь, его следует увеличить. + def push(message_name, message_body, errors_counter = 0) + redis.lpush(queue_name, Marshal.dump([message_name.to_s, message_body, errors_counter])) end + # Сделать отложенный асинхронный push + # ==== Parameters + # delay<Integer>:: время задержки в секундах + # params (См. push) + def async_push_with_delay(delay, *params) + Thread.new { sleep delay; push *params } + end + # См. push def async_push(*params) - Thread.new { push *params } + async_push_with_delay(0, params) end # ==== Returns - # <Array[String, Object]>:: + # <Array[String, Object, Integer]>:: def pop result = redis.rpop(queue_name) Marshal.load(result) if result end