情况: 我有一个通过Lambda连接到DynamoDB数据库的API。每个请求都会对数据库中的多个记录执行更改。因此,在将下一个请求发送到API之前,要求每个请求都已完全完成。否则,我将在整个数据库中获得不一致的数据。
在需要帮助的地方:鉴于我在数据库中有一系列要请求的元素...
const requestArray = [123, 456, 567]
...并且我的代码可以等待API post method promise ...
async function databaseRequestExample (requestArray[x]){
const result = await postAPIFunction(requestArray[x])
}
...我想知道如何处理数组中的另一个请求。因此,不能通过array.map进行并发调用。
谢谢
一种选择是将所有传入请求按顺序保存到FIFO SQS队列中。然后,您可以让lambda函数一次从队列中提取一个请求,并将lambda函数的保留并发设置为1。这将确保在任何给定时间,最多有一个lambda函数正在查询/进行更改。到DynamoDB,并按顺序进行处理。