2016-03-03 58 views
0

有没有办法访问在骆驼路线中可以访问的bean中设置的一些值或属性? 例,在骆驼路线中的bean中设置的访问属性/值

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

我设置在routeA豆标志并根据标志我需要调用一些路线VS别人

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

如何将标志添加为标题或其他任何方式去做吧 ?

回答

1

您可以实现您的处理器并在您的when部件之前设置呼叫。例如。

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写

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

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

我需要设置国旗在RouteA的豆。但是我没有访问豆的交易所 – kushan85

+0

@ kushan85你可以在这里分享你的'RouteA' API吗? –