DynamoDB から数千のアイテムをプルバックし、Api ゲートウェイがタイムアウト (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;
}