Почему Camel 4 с Java 21 выполняет .split/.aggregate с несколькими потоками, а Camel 3 с Java 11 использует один поток?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему Camel 4 с Java 21 выполняет .split/.aggregate с несколькими потоками, а Camel 3 с Java 11 использует один поток?

Сообщение Anonymous »

В моем маршруте Apache Camel есть следующие строки кода:

Код: Выделить всё

.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()
При выполнении этого кода с помощью Java 11 и Camel 3.17.0 я вижу в журналах, что все выполняется в одном потоке:

Код: Выделить всё

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 ...
Однако при выполнении одного и того же кода в Java 21 и Camel 4.8.2 он выполняется параллельно с 10 потоками:

Код: Выделить всё

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 ...
Вопрос
Знаете ли вы, почему это так и как я могу это исправить, чтобы все работало только в один поток?
В целом код предназначен для отправки данных в Elasticsearch и создания индекса при массовой загрузке. После этого в маршруте есть шаг .process, который присваивает псевдониму новый индекс. Без синхронного выполнения я получаю исключение index_not_found_Exception с причиной «нет такого индекса», потому что индекса еще нет, и в худшем случае псевдоним указывает на поврежденный индекс в случае более поздней ошибки при массовой загрузке в эластичный.
Мы будем очень признательны за любые идеи или решения по обеспечению однопоточного выполнения в Camel 4 с Java 21. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/793 ... le-threads
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»