Вот моя ситуация:
У меня есть скрипт, который получает необработанные данные, сохраняет их в базе данных, получает идентификатор элемента и затем отправляет его в очередь SQS amazon.
У меня есть другой скрипт (написанный на PHP), который извлекает необработанные данные из базы данных и обрабатывает их. (обычно это занимает пару минут.
Отсутствует часть, как получить сообщения из SQS для обработки. Частота обработки новых данных варьируется, она может варьироваться от нескольких элементов в час до десятков элементов в минуту.
Одним из способов было бы иметь задание cron, которое запрашивает SQS на наличие новых сообщений и запускать скрипт обработки (возможно, он должен быть многопоточным и написан не на php. Python или Ruby) Проблема cron заключается в том, что он довольно неэффективен, в фазах высокой нагрузки он будет перегружен, а в тихих фазах он будет делать бесполезные вызовы.
То, что я хотел бы иметь, это какой-то многопоточный слушатель, который будет принимать сообщения и обрабатывать их. Одним из важных требований является своевременная обработка необработанных данных, через пару минут после получения не более.
Есть мысли о лучшем решении? Подходит ли SQS для этой задачи? Какой самый эффективный способ прослушивания и обработки очереди?