Мне нужно создать лямбда-функцию, которая извлекает несколько тысяч элементов из DynamoDB и обрабатывает их до истечения времени ожидания Api Gateway (29 секунд). Я подумал, что лучший способ сделать это - разбить коллекцию на более мелкие куски и распределить их по нескольким потокам для параллельной обработки.
Проблема в том, что для того, чтобы сделать это так, как я сейчас пытаюсь, нужно ~ 25 секунд, чтобы разделить коллекцию. Есть ли лучший способ go об этом, чтобы обрабатывать намного быстрее?
Код:
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;
}