Я разделяю некоторые объекты Java, а затем объединяю их. Я немного смущен, как эта стратегия завершения работает с Camel (2.15.2). Я использую размер завершения и тайм-аут завершения. Если я правильно понимаю, таймаут завершения не имеет большого эффекта. Потому что здесь не так много ожидают.Агрегатор Camel не суммирует все
В целом, у меня есть 3000 объектов. Но, кажется, только часть его агрегирована. Но, если я изменяю значение размера завершения, ситуация меняется. Если размер равен 100, он составляет около 800, а если он равен 200, он объединяется примерно до 1600. Но я не знаю размер объектов заранее и поэтому не могу полагаться на предполагаемое число.
Может ли кто-нибудь объяснить мне, что я здесь делаю неправильно? Если я использую eagerCheckCompletion, он объединяет все это за один раз, чего я не хочу. Ниже мой маршрут:
from("direct:specializeddatavalidator")
.to("bean:headerFooterValidator").split(body())
.process(rFSStatusUpdater)
.process(dataValidator).choice()
.when(header("discrepencyList").isNotNull()).to("seda:errorlogger")
.otherwise().to("seda:liveupdater").end();
from("seda:liveupdater?concurrentConsumers=4&timeout=5000")
.aggregate(simple("${in.header.contentType}"),
batchAggregationStrategy())
.completionSize(MAX_RECORDS)
.completionTimeout(BATCH_TIME_OUT).to("bean:liveDataUpdater");
from("seda:errorlogger?concurrentConsumers=4")
.aggregate(simple("${in.header.contentType}"),
batchAggregationStrategy("discrepencyList"))
.completionSize(MAX_RECORDS_FOR_ERRORS)
.completionTimeout(BATCH_TIME_OUT)
.process(errorProcessor).to("bean:liveDataUpdater");
Спасибо за ответ. Но, я хотел знать, что случилось с моим! Кажется, если я изменю конечные точки seda на прямые, он начнет работать, как я ожидаю! Не знаю, почему! – Mashrur
Создание простейшего тестового теста и его публикации помогли бы многим :) – J2B
Извините за поздний ответ. Мне жаль, что у меня не было времени сделать простой тестовый пример, чтобы доказать свою точку зрения. Во всяком случае, похоже, что-то было, как работает приложение. Он находился в простом основном классе с использованием метода сна в течение фиксированного времени. И, кроме того, у него не было правильной логики завершения, которую я добавил позже. Я бы поделился некоторым кодом, если кто-то подумает, что это будет полезно для них. – Mashrur