So partitionieren Sie eine Liste und senden gleichzeitig Anfragen
Posted: 30 Dec 2024, 17:20
Ich möchte eine Liste in Unterlisten unterteilen und parallel eine Anfrage für jede Unterliste senden.
Ich habe eine Liste mit Produkt-IDs und möchte sie in Unterlisten unterteilen mit der Größe 3.
Nehmen wir an, ich habe zwei Stapel, aber ich habe in Opensearch getestet, dass die letztere Anfrage gesendet wird, nachdem die erste zurückgegeben wurde.
Ich habe jedoch einen Test wie unten geschrieben und hatte einen bedingten Haltepunkt, um bei „test3“ anzuhalten. Alle anderen Zeichenfolgen in der Liste wurden erfolgreich gedruckt. Ich habe keine Ahnung, warum der Test parallel verarbeitet werden kann, während die Implementierung für Produktpreise nicht möglich ist
Ich habe eine Liste mit Produkt-IDs und möchte sie in Unterlisten unterteilen mit der Größe 3.
Code: Select all
List productBatches = StreamSupport.stream(Iterables.partition(productIds, 3).spliterator(), true).toList();
List
productPrices = productBatches.parallelStream()
.map(batch -> productPriceService.getProductsPrices(batch))
.flatMap(List::stream)
.toList();
Code: Select all
List list = new java.util.ArrayList(List.of());
for (int i = 0; i < 40; i++) {
list.add("test" + i);
}
List listBatches = StreamSupport.stream(Iterables.partition(list, 3).spliterator(), true).toList();
List testStrings = listBatches.parallelStream()
.map(batch -> {
System.out.println("Batch: " + batch.toString());
return String.join(",", batch);
})
.toList();