我有一个客户端不断将半实时数据倾注到sqs队列中,并希望处理和存储消息。我的第一个想法是使用CloudWatch调度程序,该调度程序提示Lambda具有lambda然后生成worker lambdas处理并将数据推送到Firehose的大约消息数。问题是每天会有数十万条消息被放入队列。我也可以使用EC2来实现这一点,但还是有其他任何经济有效的半实时处理队列的方法。
答案 0 :(得分:1)
在AWS Lambda中处理流数据的推荐解决方案是将数据发送到 Amazon Kinesis ,然后可以自动触发Lambda函数。 Kinesis还保留了消息的顺序。 (如果使用FIFO队列,Amazon SQS仅保留排序,这会产生吞吐量限制。)
如果您真的只能使用SQS进行处理,那么您可以编写一个从SQS中提取并推送到Kinesis的程序,或者只是从SQS提取并立即处理数据。此类程序可以在Amazon EC2实例上运行,也可以由定期的Amazon CloudWatch事件定期触发。
要考虑的主要方法是如何处理变量。如果您无法接受到达和处理的消息之间的长时间延迟,您将需要使用Lambda(自动可扩展)或具有足够的可用处理能力来处理峰值。