Эквивалент сельдерея в узле JS
Пожалуйста, предложите эквивалент Celery в Node JS для запуска асинхронных задач. Мне удалось найти следующее:
- ( Позже)
- Куе ( Kue),
- кофе-реск ( coffee-resque)
- крон ( cron)
- узел сельдерея ( узел сельдерея)
Я запускаю как ручные, так и автоматические потоки в фоновом режиме и взаимодействую с MongoDB.
нод-сельдерей использует Redis DB, а не Mongo DB. Можно ли как-то это изменить? Когда я установил узел-сельдерей, redis был установлен как зависимость.
Я новичок в сельдерее, пожалуйста, руководство. Спасибо.
4 ответа
Celery в основном клиент RabbitMQ. Существуют производители (задачи), потребители (работники) и брокер сообщений AMQP, который доставляет сообщения между задачами и работниками.
Знание этого позволит вам написать свой собственный сельдерей в node.js.
node-celery - это библиотека, которая позволяет процессу вашего узла работать и как клиент сельдерея (производитель / издатель), и как работник сельдерея (потребитель).
Смотрите https://abhishek-tiwari.com/post/amqp-rabbitmq-and-celery-a-visual-guide-for-dummies
Пойдите для Kue, это целостное решение, которое напоминает Celery in Python word; у него есть следующие понятия: производители / потребители, отложенные задачи, повторное выполнение задачи, TTL задачи, возможность циклического перебора задач для нескольких потребителей, прослушивающих одну и ту же очередь, и т. д.
Вероятно, Celery более продвинутый, с большим количеством функций и большим количеством поддерживаемых брокеров, и вы можете использовать node-celery, если хотите, но, на мой взгляд, я не думаю, что нужно переходить на гибридное решение, которое требует установки python и node, когда вы можете используйте только тот язык, который достаточен в 90% случаев (если, конечно, не требуется).
----------------------------------------
Edit-1/2018
Я не рекомендую использовать Kue сейчас, так как это похоже на тупиковый проект, вместо этого используйте Celery. Он очень хорошо поддерживается и поддерживается сообществом и поддерживает большое количество вариантов использования.
Также стоит упомянуть https://github.com/OptimalBits/bull. Это быстрая и надежная очередь на основе Redis, написанная для обеспечения стабильности и атомарности.
Bull 4 в настоящее время находится в стадии бета-тестирования и имеет несколько полезных функций https://github.com/taskforcesh/bullmq
Пойдите для Kue, это целостное решение, которое напоминает Celery in Python word; у него есть следующие понятия: производители / потребители, отложенные задачи, повторное выполнение задачи, TTL задачи, возможность циклического перебора задач для нескольких потребителей, прослушивающих одну и ту же очередь, и т. д.
Кью, после того, как прошло так много времени, все еще остаются те же старые основные проблемы:
- github.com/Automattic/kue/issues/514
- github.com/Automattic/kue/issues/130
- github.com/Automattic/kue/issues/53
Если кто-то читает это, не хочет переписывать Kue, не начинайте с этого. Это хорошо для простых задач. Но если вы хотите иметь дело со многими из них, параллельными или цепочками задач (когда одна задача создает другую) - прекратите тратить свое время.
Я потратил месяц, пытаясь отладить Kue, и до сих пор не добился успеха. Наилучшим выбором было изменить Kue для очереди Pubs/sub Messaging в RabbitMQ и Rabbot (еще одна завершение RabbitMQ).
Лично я не использовал столько сельдерея, чтобы вкладывать в него деньги, но поскольку я искал альтернативу сельдерею и обнаружил, что кто-то советует для Кью, я просто кипятил мою кровь в венах.
Если вы хотите отправить задержанное электронное письмо ( как в примере с Kue), вы можете пойти на все, что захотите, не беспокоясь об ошибках. Но если вам нужна надежная системная задача / очередь сообщений, даже не начинайте с Kue. Я бы лично пошел с 5. узел-сельдерей (узел сельдерей)
По нашему опыту, Кью был ненадежным, теряя работу. Конечно, мы использовали более старую версию, вероятно, она была исправлена с тех пор. Это было также в период, когда TJ отказался от проекта, а новые сопровождающие не были выбраны. Мы перешли на бобовый стебель и были очень счастливы. Мы используем https://github.com/ceejbot/fivebeans в качестве интерфейса узла для beanstalkd.