Какие минусы/преимущества у такого подхода создания php-воркера для сервера очередей?

Добрый день, столкнулся с задачей: нужно создать несколько php-worker`ов, которые будут слушать сервер очередей RabbitMQ.

Нагуглил 4 варианта реализации задачи:

1. Cron с предварительной проверкой на существование воркеров.
2. Sh-скрипт с бесконечным циклом (+ автозагрузка в ОС) с такой-же (как выше) проверкой на существование воркера, и запуск при необходимости.
3. Supervisor
4. Systemd

Мне больше понравился последний вариант, т.к. решается не костылями (на мой взгляд), и штатными средствами линукса, и сторонее ПО ставить не нужно.

Подскажите пожалуйста, насколько это правильное решение ? Какие есть минусы, или плюсы у этого решения ?

Вот алгоритм моих действий:

создание файла /etc/systemd/system/php-queue-worker@.service

С таким содержимым:

[Unit]
Description=PHP QUEUE WORKER %I
After=network.target

[Service]
User=root
Group=root
ExecStart=/usr/bin/php /var/www/html/worker.php
Restart=always

[Install]
WantedBy=multi-user.target


Добавляю в автозагрузку systemctl enable php-queue-worker@1

Проблемы, которые пока не удалось решить:
как автоматически запускать несколько воркеров. Например, чтобы всегда было 5 ?
Возможно также поможете решить эту проблему. Буду благодарен.
  • Вопрос задан
  • 794 просмотра
Решения вопроса 1
OnYourLips
@OnYourLips
Вы меня как эксперта призвали

1 и 2 никуда не годятся
3 легаси
4 ок
4 в режиме --user - уже нормально
Ну и дальнейшая оркестрация в системах с контейнерами как продолжение
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Sanes
@Sanes
!
3 и 4 работают, как сервис. Самые оптимальные варианты.
Ответ написан
@d-sem
Еще вариант - воркер в докер контейнере с авторестартом. Перезапуск при ошибке и рестарте системы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы