Warum führt Camel 4 mit Java 21 meinen Code mit mehreren Threads aus, während Camel 3 mit Java 11 einen einzelnen ThreadJava

Java-Forum
Guest
 Warum führt Camel 4 mit Java 21 meinen Code mit mehreren Threads aus, während Camel 3 mit Java 11 einen einzelnen Thread

Post by Guest »

Ich habe die folgenden Codezeilen in meiner Apache Camel-Route:

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()
Wenn ich diesen Code mit Java 11 und Camel 3.17.0 ausführe, kann ich in den Protokollen sehen, dass alles in einem einzigen Thread ausgeführt wird:

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 ...
Wenn jedoch derselbe Code mit Java 21 und Camel 4.8.2 ausgeführt wird, wird er mit 10 Threads parallel ausgeführt:

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 ...
Frage
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!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post