我目前正在构建一个系统,该系统要求发送到FIFO SQS队列的消息按顺序处理。我已经考虑过配置lambda函数来处理数据,但是我遇到了竞争条件。如果lambda 1开始处理100条消息,并且在lambda 2开始处理5条消息后立即执行,则lambda 2可能会先完成。
如何确保lambda 1始终在lambda 2之前处理其消息?谢谢!
答案 0 :(得分:1)
如果您没有很多负载(对您的用例主观),您可以使用单线程系统来解决此问题。 Lambda固有地根据需求并行启动多个实例,可能不适合您的用例。
正如评论中所指出的,您可能希望使用Redis或DynamoDB来锁定同步执行,但这会导致很多问题和不必要的开销。
最好使用EC2实例并轮询SQS FIFO队列。