Как SQS Amazon уведомляет один из моих «рабочих» серверов, когда в очереди что-то есть? - PullRequest
14 голосов
/ 14 ноября 2010

Я следую этому уроку: http://boto.s3.amazonaws.com/sqs_tut.html

Когда в очереди что-то есть, как мне назначить одного из моих 20 рабочих для его обработки?

Я использую Python.

Ответы [ 5 ]

12 голосов
/ 14 ноября 2010

К сожалению, в SQS отсутствует некоторая семантика, которую мы часто ожидаем в очередях. Нет уведомлений или каких-либо блокирующих вызовов «get».

Связанная с Amazon служба SNS / Simple Notification Service может оказаться полезной для вас в этой работе. Добавив работу в очередь, вы можете отправить уведомление подписанным работникам.

Смотри также:

http://aws.amazon.com/sns/

Рекомендации по использованию Amazon SQS - опрос очереди

9 голосов
/ 05 марта 2013

Это (сейчас) возможно при длинном опросе в очереди SQS.

http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryReceiveMessage.html

Поддержка длинных опросов (целое число от 1 до 20) - продолжительность (в секундах), в течение которой вызов действия ReceiveMessage будет ожидать, пока сообщение не окажется в очереди навключить в ответ, а не возвращать пустой ответ, если сообщение еще не доступно.

Если вы не укажете WaitTimeSeconds в запросе, атрибут очереди ReceiveMessageWaitTimeSeconds используется для определения продолжительности ожидания.1009 *

Тип: целое число от 0 до 20 (секунд)

По умолчанию: ReceiveMessageWaitTimeSeconds очереди.

7 голосов
/ 20 сентября 2013

Фактически, если вам не требуется низкая задержка, вы можете попробовать это:

Создает сигнал тревоги в вашей облачной очереди, например, сообщения видимые или полученные сообщения> 0. В качестве действия вы отправите сообщение в тему sns, которая затем может отправить сообщение вашим работникам через конечную точку http / s.

обычно такой подход используется для автоматического масштабирования.

6 голосов
/ 14 ноября 2010

Далее, чтобы указать на проблему с SQS - Вы должны опросить новые уведомления, и есть нет гарантии, что в любом конкретном опросе вы получите событие, которое существует в очереди (это связано с избыточность их архитектуры). Это означает, что вам нужно учитывать возможность того, что ваш опрос не вернул существующее сообщение (что для меня означало, что мне нужно было увеличить скорость опроса).

В целом я обнаружил слишком много ограничений в SQS (как я обнаружил в некоторых других инструментах AWS, таких как SimpleDB). Но это только мое введенное мнение.

1 голос
/ 28 мая 2016

Теперь есть Amazon JMS-оболочка для SQS, которая позволит вам создавать прослушиватели, которые автоматически запускаются при появлении нового сообщения.

http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/jmsclient.html#jmsclient-gsg

...