我需要构建一个 lambda 函数,从 DynamoDB 拉回数千个项目并在 Api Gateway 超时(29 秒)之前处理它们。我认为最好的方法是将集合分成更小的块并将它们分布在多个线程中以并行处理。
问题是,按照我目前尝试的方式进行操作需要大约 25 秒来拆分集合。有没有更好的方法来解决这个问题以便更快地处理?
代码:
public static List<List<Item>> partitionList(ItemCollection<QueryOutcome> items) {
final int partitionSize = 20;
List<List<Item>> partitioned = new LinkedList<List<Item>>();
List<Item> itemList = new ArrayList<Item>();
for(Item item : items) {
itemList.add(item);
}
for (int i = 0; i < itemList.size(); i += partitionSize) {
partitioned.add(itemList.subList(i, Math.min(i + partitionSize, itemList.size())));
}
return partitioned;
}