Как я могу узнать, есть ли у SQS новое сообщение? - PullRequest
0 голосов
/ 06 июля 2019

Я пишу приложение, использующее лямбда-функцию, которая отправляет запрос в приложение весенней загрузки, которое вызывает другую службу.Я должен использовать sqs (обязательно).Так что sqs между лямбдой и весной.Вопрос в том, как мое весеннее приложение узнает, есть ли в sqs новое сообщение.

  1. Я слышал о длинном пуле, но не знаю, нужно ли мне это.

  2. Нужно ли устанавливать цикл, который открывает длинный пул навсегда или что-то в этом роде?

  3. Это эффективно?Я имею в виду, если в sqs есть 10 сообщений, Соединение будет открыто десять раз?

Также я нахожу здесь использование цикла while: Проверка входящего сообщения в aws sqs

Спасибо

1 Ответ

1 голос
/ 06 июля 2019

Ответ, который вы указали, является точным.

Вы должны написать программу, которая опрашивает SQS на предмет сообщения (или до 10 сообщений).Более эффективно использовать длинные опросы, так как вам требуется меньше звонков.

Если вы хотите узнать о сообщении очень быстро, вам придется постоянно опрашивать.То есть, как только он вернется и скажет «нечего получить», вам следует позвонить еще раз.Чтобы уменьшить частоту этих вызовов, вы можете установить длительный опрос , максимум до 20 секунд.Это означает, что, если в очереди нет сообщений, опция ReceiveMessages() займет 20 секунд, прежде чем вернет ответ «нет сообщений».Однако, если сообщение тем временем прибывает, оно ответит немедленно.Параметр длинного опроса указывается при отправке запроса ReceiveMessages().

Если вам не требуется мгновенное уведомление, ваше приложение может звонить реже (например, каждую минуту или каждые несколько минут).Для этого потребуется меньше вызовов на Amazon SQS.

При совершении вызова ReceiveMessages() ваше приложение может запросить до 10 сообщений .Это означает, что может быть возвращено несколько сообщений.

Как только ваше приложение завершит обработку сообщения, оно должно вызвать DeleteMessage(), чтобы удалить сообщение из очереди.Это отказоустойчивая система, которая автоматически помещает сообщение обратно в очередь, если возникает проблема с приложением и сообщение не обрабатывается должным образом.

Это отличное видео с конференции AWS re: Inventэто объясняет Amazon SQS (и Amazon SNS) в деталях: AWS re: Invent SVC 105: Обмен сообщениями AWS

...