Тревога, когда очередь SQS не пуста по прошествии определенного времени?

Вариант использования

У нас есть 1 sqs, который используется лямбдой, и мы хотели бы знать, все ли сообщения в sqs были приняты или нет после определенной временной метки.

Например, какая-то другая система начнет отправлять сообщения в SQS с 6 утра, и лямбда-функция обработает их все за 4 часа. Мы хотели бы узнать в 10 утра, все сообщения в очереди были обработаны или нет.
И нам нужно только определять глубину sqs один раз в день.

Вопросов.

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

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

Любые отзывы приветствуются!

Благодарность


person Huazhe Yin    schedule 18.04.2020    source источник
comment
Почему настораживает длительная глубина очереди подъема тяжестей?   -  person jarmod    schedule 18.04.2020
comment
@jarmod эй! Настораживает по глубине очереди не тяжелый подъем. но наш вариант использования - подавать сигнал тревоги только через определенное время. Потому что мы ожидаем, что в очереди будут сообщения в течение определенного периода времени, но не через определенное время.   -  person Huazhe Yin    schedule 18.04.2020
comment
Итак, у вас есть (запланированная?) Лямбда, потребляющая очередь, и вы не можете просто заставить очередь запускать лямбда-выражение всякий раз, когда поступают сообщения, поэтому вам нужно опрашивать их?   -  person jarmod    schedule 18.04.2020
comment
Что вы имеете в виду под sqs, потребляемым лямбдой? Очередь Amazon SQS напрямую запускает функцию AWS Lambda?   -  person John Rotenstein    schedule 18.04.2020
comment
@jarmod, возможно, я неправильно изложил свой вариант использования. просто отредактируйте мой вопрос заново.   -  person Huazhe Yin    schedule 18.04.2020


Ответы (1)


Постоянная проверка

Вы можете создать аварийный сигнал Amazon CloudWatch для метрики ApproximateNumberOfMessagesVisible для очереди.

Например, если вы хотите получать уведомления, когда очередь не была пустой в течение последнего часа, вы можете создать сигнал тревоги, когда Мин ApproximateNumberOfMessagesVisible> 0 в течение 60 минут. Это означает, что наименьшее количество сообщений в очереди за последний час было больше нуля.

Проверка в определенное время

Если вы хотите проверить длину очереди в определенное время, вам нужно будет использовать Amazon CloudWatch Events для запуска функции AWS Lambda в определенное время.

Функция Lambda может вызывать get_queue_attributes() , чтобы получить ApproximateNumberOfMessages. Если это больше, чем нужно, функция Lambda может отправить сообщение в тему Amazon SNS. Пользователи могут подписаться на эту тему, чтобы получать уведомление по электронной почте или SMS.

person John Rotenstein    schedule 18.04.2020
comment
Да, но нам действительно нужно сигнализировать, когда sqs не пуст после определенного времени. Например, 10 утра каждый день. Возможно, я неправильно изложил свой вариант использования, просто отредактируйте его заново. - person Huazhe Yin; 18.04.2020
comment
Я добавил еще один вариант на фиксированное время. - person John Rotenstein; 18.04.2020
comment
Ага. Это своего рода тяжелая работа. Было бы неплохо, если бы облачные часы могли поддерживать это напрямую. Но спасибо! - person Huazhe Yin; 18.04.2020
comment
@HuazheYin, несмотря на такое обычное и необычное требование, все это не является тяжелым делом. Если вы хотите знать, пуста ли очередь в 10 утра в определенные дни, запланируйте запуск лямбда-выражения в 10 утра в эти дни и просто проверьте глубину очереди. Но что, если сообщение поступит в пустую очередь в 10.01? Что тогда должно произойти? Вам следует подумать о триггерах, основанных на событиях. Когда что-то попадает в SQS, это может вызвать лямбда-выражение для обработки сообщения. Если он приземляется в пределах временного интервала, что «очередь должна быть пустой», сообщите об этом через SNS. - person jarmod; 18.04.2020
comment
Ага. Я мог бы представить себе вместо выделенной лямбды, которая использовалась бы только для метрики испускания. Я мог бы просто использовать ту же лямбду, которая использует sqs, для выдачи метрики в начале процесса. - person Huazhe Yin; 18.04.2020
comment
@JohnRotenstein thx для вашего ответа, хотя, скорее всего, я не буду продолжать решение. но спасибо за предоставление его в качестве альтернативы, которая может быть полезна другим. Принимаю ваш ответ. Благодарность! - person Huazhe Yin; 18.04.2020