Вот мое определение маршрута:
Код: Выделить всё
from(direct("input"))
.routeId("input-route")
.setHeader(HttpHeaders.CONTENT_TYPE, constant(MediaType.MULTIPART_FORM_DATA_VALUE))
.unmarshal().mimeMultipart()
.split().tokenize("\n").streaming()
.aggregate(constant(true), new GroupedBodyAggregationStrategy())
.completionSize(1000)
.completionPredicate(exchangeProperty(Exchange.SPLIT_COMPLETE))
.setExchangePattern(ExchangePattern.InOnly)
.multicast().parallelProcessing()
.to(direct("output"));
Использование фабрики обмена объединено в пул, агрегатор должен завершиться, когда будет достигнут размер пакета или когда для свойства SPLIT_COMPLETE установлено значение true.
Обмен должен быть помечен как выполненный после обработки.
Фактическое поведение:
Свойство SPLIT_COMPLETE всегда имеет значение false.
Обмен никогда не завершается.
Агрегация никогда не завершается.
MulticastProcessor.MulticastTask#iterator продолжает расти и заканчивается, что приводит к OOM.
Эта проблема начала возникать после перехода на Apache Camel 4.6.0. Кто-нибудь сталкивался с подобной проблемой или знает, что может быть причиной такого поведения?
Будем очень признательны за любую помощь или предложения. Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/790 ... g-exchange