我正在拆分一些 java 对象,然后进行聚合。我有点困惑这种完成策略如何与骆驼(2.15.2)一起使用。我正在使用完成大小和完成超时。如果我理解正确,完成超时对它没有太大影响。因为,这里没有太多的等待。
总共,我有 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");