在 camel 路由中访问 bean 中设置的属性/值

Access properties / values set in the bean in camel route

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

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())
        ;

如何将标志添加为 header 或任何其他方式?

您可以实现您的处理器并将其设置为在 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);        
    ...
}