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