在 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);
...
}
有没有办法访问在 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);
...
}