Добрый день, столкнулся с задачей: нужно создать несколько 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 ?
Возможно также поможете решить эту проблему. Буду благодарен.