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