有没有办法访问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())
;
如何将标记添加为标题或以其他任何方式执行此操作?
答案 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);
...
}