Лучший способ обработки сообщений SQS

0 j doe [2018-05-14 19:27:00]

У меня есть клиент, который постоянно заливает данные в режиме реального времени в очередь sqs и хочет обрабатывать и хранить сообщения. Моя первая мысль заключалась в том, чтобы использовать планировщик CloudWatch, который запрашивает Лямбду с приблизительным количеством сообщений, которые затем лямбда заставляют рабочих лямбда обрабатывать и выталкивать данные в Firehose. Проблема заключается в том, что в очередь будут помещаться сотни тысяч сообщений каждый день. Я мог бы также использовать EC2 для этого, но есть ли другой эффективный с точки зрения затрат способ обработки очереди в режиме реального времени.

amazon-web-services amazon-ec2 amazon-sqs aws-lambda


1 ответ


1 John Rotenstein [2018-05-15 00:36:00]

Рекомендуемым решением для обработки потоковых данных в AWS Lambda является отправка данных в Amazon Kinesis, которые могут автоматически запускать функцию Lambda. Kinesis также сохраняет порядок сообщений. (Amazon SQS сохраняет только заказы, если вы используете очередь FIFO, которая имеет ограничения пропускной способности.)

Если вы действительно ограничены обработкой из SQS, вы можете написать программу, которая вытаскивает из SQS и толкает в Kinesis или просто вытаскивает из SQS и обрабатывает данные немедленно. Такая программа может работать на экземпляре Amazon EC2 или может быть запущена на регулярной основе запланированным мероприятием Amazon CloudWatch.

Главное, чтобы рассмотреть, как обрабатывать переменные тома. Если вы не можете принимать длительные задержки между сообщениями, прибывающими и обрабатываемыми, вам необходимо либо использовать Lambda (автоматически масштабируемое), либо иметь достаточную вычислительную мощность для обработки пиков.