Code: Select all
.split().method(SomeDataCacheSplitter.class, "split").streaming()
.marshal(gsonDataFormat)
.aggregate(constant(true), new GroupedBodyAggregationStrategy())
.executorService(new SynchronousExecutorService())
.completionSize(1000)
.completionPredicate(someDataCache.getEndOfFilePredicate())
.to("elasticsearch://elasticsearch?operation=Bulk&hostAddresses=#elasticsearchHostAddressess")
.end()
.end()
Code: Select all
2025-01-13 13:23:16.788 DEBUG 31550 --- [/O dispatcher 1] org.apache.http.wire ...
2025-01-13 13:23:16.788 DEBUG 31550 --- [/O dispatcher 1] org.apache.http.wire ...
2025-01-13 13:23:16.788 DEBUG 31550 --- [/O dispatcher 1] org.apache.http.wire ...
Code: Select all
2025-01-13T13:46:38.956+01:00 DEBUG 46176 --- [ient-0-thread-9] org.apache.http.wire ...
2025-01-13T13:46:38.956+01:00 DEBUG 46176 --- [ient-0-thread-7] org.apache.http.wire ...
2025-01-13T13:46:38.956+01:00 DEBUG 46176 --- [ient-0-thread-6] org.apache.http.wire ...
Wissen Sie, warum das so ist und wie ich es beheben kann, damit alles nur noch läuft ein einzelner Thread?
Insgesamt ist der Code darauf ausgelegt, Daten an Elasticsearch zu senden und einen Index beim Massen-Upload zu erstellen. Anschließend gibt es einen .process-Schritt in der Route, der dem Alias den neuen Index zuweist. Ohne synchrone Ausführung erhalte ich eine index_not_found_Exception mit der Begründung „no such index“, weil der Index noch nicht vorhanden ist und im schlimmsten Fall der Alias auf einen beschädigten Index verweist, falls später beim Massen-Upload auf Elastic ein Fehler auftritt.
Alle Erkenntnisse oder Lösungen zur Gewährleistung der Single-Threaded-Ausführung in Camel 4 mit Java 21 wären sehr dankbar. Danke!