在camel route

时间:2016-03-03 00:20:11

标签: java spring apache-camel

有没有办法访问bean中设置的某些值或属性,可以在camel路由中访问? 例如,

from(RoutA.getEndpoint()).routeId(RouteA.getEndpoint())
        .to(RouteB.getEndpoint())
        .to(RouteC.getEndpoint())
        .to(RouteD.getEndpoint())
        ;

我在routeA bean中设置了一个标志,并根据我需要调用某些路由与其他路由的标志

from(RouteA.getEndpoint()).routeId(RouteA.getEndpoint())
        .choice()
            .when(header(flag).isEqualTo(true)).to(RouteB.getEndpoint())
        .end()
        .to(RouteC.getEndpoint())
        .to(RouteD.getEndpoint())
        ;

如何将标记添加为标题或以其他任何方式执行此操作?

1 个答案:

答案 0 :(得分:1)

您可以在when部分之前实施处理器并设置呼叫。 E.g。

from(RouteA.getEndpoint()).routeId(RouteA.getEndpoint())
        .process(yourProcessor) 
        .choice()
            .when(header(flag).isEqualTo(true)).to(RouteB.getEndpoint())
        .end()
        .to(RouteC.getEndpoint())
        .to(RouteD.getEndpoint());

并在yourProcessor impl write

public void process(Exchange exchange) throws Exception {       
    ...
    Map<String, Object> headers = exchange.getIn().getHeaders(); 
    headers.put("flag", Boolean.TRUE);    

    exchange.getOut().setHeaders(headers);        
    ...
}