Shader

Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Здравствуйте. Не могу определиться с выбором системы организации очередей в текущем ITSM интранет-проекте. Проект пишется на Yii, но это побочная информация. Прикрутить к нему внешний компонент несложно. В процессе работы будут возникать периодические ресурсоёмкие задачи с долгим временем выполнения: сохранение конфигураций, работа с оборудованием, долгие SOAP-запросы на другие сервисы и т.п. Задачи односторонние, т.е. взаимодействия с пользователем не будет - только отчёт о выполнении где-нибудь в отдельном схлопывающемся виджете. Показалось разумным реализовать это в виде фоновых задач. Однако, в процессе выбора решения почувствовал себя буридановым ослом: - PHP Resque <link>
Требует установленного Redis и php-resque. Имеет шикарный веб-интерфейс ResqueBoard, но он еще хочет MongoDB, NodeJS и npm. Такой тщательный менеджмент, это, безусловно, хорошо, но острой необходимости в нём нет. Плюс смущает обилие большого количества сопутствующих сервисов - замучаюсь обновлять и поддерживать. - Gearman <link>
Может держать очереди в памяти, чего для моих задач вполне хватит, а значит не нужны дополнительные установки хранилища. Но мониторинг Gearman-Monitor жёстко привязывает к Net_Gearman и использовать pecl расширение не получится. Но минус это несущественный. - AMQP <link>
Может подключаться к разным серверам очередей и, например, у RabbitMQ есть порт для RHEL (который и будет стоять на сервере), довольно гибкая конфигурация и, что для меня немаловажно, простота реализации. Скелет проекта приходится собирать в одиночку и не очень хочется взрывать себе мозг еще пятью технологиями. Виджет с количеством текущих задач пользователя и статусом их выполнения в любом случае будет и работать он будет используя вебсокеты. Подробной статистики, как в ResqueBoard не требуется - пользователю достаточно будет видеть статус выполнения задачи, а администраторы могут контролировать логи. Хотя ResqueBoard, конечно, красив, зараза. Очень сильно наворачивать по горизонтали не хочется, чтобы не вышло, как например, в клавогонках: node.js, redis, pubsub, Socket.IO и грядёт добавление mongodb и angular.js. Пока я выбираю между PHP Resque и AMQP. Возможно, я упускаю что-то важное или не заметил явной альтернативы? Буду благодарен за любые наводки, рекомендации и личное мнение тех, кто использовал очереди и фоновые задачи в рамках PHP-проектов. |