Код: Выделить всё
.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()
Код: Выделить всё
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 ...
Код: Выделить всё
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