Назад |
Перейти на главную страницу
Альтернативные варианты для очереди заданий по расписанию?
Мне очень нравится использовать очереди для межпроцессного взаимодействия. Замечательно иметь возможность развернуть тонну рабочих и быть уверенным, что задание в очереди запускается только один раз, обрабатывается справедливо, может масштабироваться по горизонтали и может, при необходимости, истечь, если оно не обрабатывается достаточно быстро.
Однако я не могу найти реализацию очереди заданий, которая также поддерживает помещение заданий в очередь в указанное время.
Как лучше всего решить эту проблему? Есть ли такая очередь?
Пока мои альтернативы такой очереди:
- beanstalkd - поддерживает отложенные задания, я могу вычислить дельту между настоящим моментом и указанным временем.
- неточно: что происходит при изменении часового пояса или действительно больших дельтах (месяцев)
- Команда "at" - создать задание, которое будет запускаться и помещать задание по расписанию в очередь в указанное время.
- привязан к одной машине: что произойдет, если система перезагрузится? Как перенести задания на новый сервер? Единая точка отказа
- вручную обработать истечение срока, если у вас длительный простой.
- delayed_job / custom polling - создайте демона (что-то вроде delayed_job), который непрерывно опрашивает базу данных запланированных заданий и вставляет в очередь в указанное время