Ответ 1
Обновление 2019
Прежде чем думать о написании пакета для чего-либо, сначала посмотрите, существуют ли пакеты, которые делают то, что вам нужно. В мире Метеор это означает, что нужно искать в Атмосфере пакеты "работа/очередь/задача/управление работником/планирование", а затем npm для тех же условий поиска. Вам также необходимо более точно определить ваши требования:
- Вы хотите постоянство, или будет работать решение в памяти?
- Вы хотите иметь возможность распределять рабочие места на разные машины?
Метеор конкретных
- Job-collection - надежный (я использовал его в 2014 году на производстве при запуске), но в настоящее время в режиме обслуживания. Позволяет запланировать постоянные задания для запуска в любом месте (серверы, клиенты).
- SteveJobs - активно поддерживается Максом Савином, автором нескольких мощных инструментов Meteor
- littledata: synced-cron - "Простая система cron для Meteor. Она поддерживает синхронизацию заданий между несколькими процессами".
Брошенные пакеты:
- artwells: очередь - приоритеты, планирование, ведение журнала, повторная постановка в очередь. Очередь при поддержке MongoDB. Последнее принятие кода: 2015-окт.
- супер базовые пакеты cron: easycron. Последнее обновление: декабрь 2015 г.
- дифференциал: работники - порождают безголовые рабочие метеорные процессы для работы на асинхронных заданиях. Последнее принятие кода: январь 2015
- cron (с 2015 года)
- PowerQueue - заброшен с 2014 года. Очередь асинхронных задач, использование ресурсов газа, повторная попытка не удалась. Поддерживает вложенные очереди. Нет планирования. Никаких тестов, но отличная демоверсия. Не подходит для длительной работы из-за использования рекурсивных вызовов.
Пакеты Npm
Meteor уже несколько лет может использовать пакеты npm напрямую, поэтому этот вопрос сводится к поиску пакетов управления заданиями/работниками/очередями в NPM. Если вас не волнует настойчивость:
- Async "предоставляет около 70 функций, которые включают в себя обычные" функциональные "подозреваемые (
map
,reduce
,filter
,each
...), а также некоторые общие шаблоны для асинхронного потока управления (parallel
,series
,waterfall
...)" - d3-queue - минималистичный, написанный автором D3 Майком Бостоком
Если вы хотите сохранить постоянство, так как Meteor уже использует MongoDB, может быть выгодно использовать пакет планирования заданий с сохранением в MongoDb. Кажется, самой мощной и популярной является программа "Повестка дня", но, к сожалению, она не поддерживалась месяцами и имеет значительное отставание в решении проблем.
Если вы хотите добавить в свой проект зависимость, поддерживаемую redis, есть несколько вариантов:
- bull - наиболее полнофункциональное решение для очереди заданий для Node, поддерживаемое Redis
- Пчела - простая, быстрая, крепкая. Не страдает от утечки памяти, которую демонстрирует Bull
- Kue - приоритетная очередь заданий для узла
Как и MongoDB, Redis также может обеспечивать высокую доступность (через Redis Sentinel), и если вы хотите распределить задания между несколькими рабочими машинами, вы можете направить их все на один сервер Redis.