Обработка элементов в очереди SQS с помощью сценария php - PullRequest
1 голос
/ 20 ноября 2011

Вот моя ситуация:

У меня есть скрипт, который получает необработанные данные, сохраняет их в базе данных, получает идентификатор элемента и затем отправляет его в очередь SQS amazon.

У меня есть другой скрипт (написанный на PHP), который извлекает необработанные данные из базы данных и обрабатывает их. (обычно это занимает пару минут.

Отсутствует часть, как получить сообщения из SQS для обработки. Частота обработки новых данных варьируется, она может варьироваться от нескольких элементов в час до десятков элементов в минуту.

Одним из способов было бы иметь задание cron, которое запрашивает SQS на наличие новых сообщений и запускать скрипт обработки (возможно, он должен быть многопоточным и написан не на php. Python или Ruby) Проблема cron заключается в том, что он довольно неэффективен, в фазах высокой нагрузки он будет перегружен, а в тихих фазах он будет делать бесполезные вызовы.

То, что я хотел бы иметь, это какой-то многопоточный слушатель, который будет принимать сообщения и обрабатывать их. Одним из важных требований является своевременная обработка необработанных данных, через пару минут после получения не более.

Есть мысли о лучшем решении? Подходит ли SQS для этой задачи? Какой самый эффективный способ прослушивания и обработки очереди?

...