我有一个onCompletion()
的骆驼路线,然后点击Processor
。在此处理器中,它从Exchange
获取标头,但此标头返回null。
我知道onCompletion()
在该特定路由的末尾运行,但Exchange
标头肯定仍然有效且可用。下面的inputLocation
在课程中定义得更高,适用于以前的路线。
from("file://"+inputLocation+"?initialDelay=5000&delay=2000&recursive=true&delete=true")
.onCompletion()
.process(storedProcProcessor())
.end()
.choice()
.when(appContext.getBean(AppPredicate.class))
.log("Need to check against APP in the database for destination.")
.setHeader(AppConstants.INPUTLOCATION, simple(inputLocation))
.process(databaseProcessor())
.endChoice();
答案 0 :(得分:1)
我查了一下:
@Override
public void configure() {
from("direct:start")
.onCompletion()
.process(new Processor() {
@Override
public void process(final Exchange exchange) throws Exception {
LOG.info("Hello, {}", exchange.getIn().getHeader("myHeader"));
}
})
.end()
.setHeader("myHeader").constant("World!");
}
}
打印
你好,世界!
因此,标题myHeader
仍可在onCompletion
中使用。那么,我猜你的标题永远不会正确设置?