Вот моя ситуация:
У меня есть скрипт, который получает необработанные данные, сохраняет их в базе данных, получает идентификатор элемента, а затем отправляет его в очередь Amazon SQS.
У меня есть другой скрипт (написанный на PHP), который извлекает необработанные данные из базы данных и обрабатывает их. (обычно это занимает пару минут.
Недостающая часть заключается в том, как получить сообщения из SQS для обработки. Частота обработки новых данных варьируется, она может варьироваться от нескольких элементов в час до десятков элементов в минуту.
Одним из способов было бы иметь задание cron, которое запрашивает SQS для новых сообщений и запускает сценарий обработки (он должен быть многопоточным и написан на чем-то другом, а не на php. Возможно, на Python или Ruby). Проблема с cron заключается в том, что он довольно неэффективен, в фазах высокой нагрузки он будет перегружен, а в тихих фазах будет выполнять бесполезные вызовы.
Я бы хотел иметь какой-нибудь многопоточный слушатель, который бы получал сообщения и обрабатывал их. Одним из важных требований является своевременная обработка необработанных данных, максимум через пару минут после получения.
Любые мысли о лучшем решении? Подходит ли SQS для этой задачи? Каков наиболее эффективный способ прослушивания и обработки очереди?
queue.poll() do |msg| #process the message end
- person randomuser   schedule 25.11.2011