Camel onCompletion有空头

时间:2014-12-05 11:15:23

标签: java apache-camel

我有一个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();

1 个答案:

答案 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中使用。那么,我猜你的标题永远不会正确设置?