Java Apache camel拦截,更新所有RouteBuilder的交换消息,然后继续
我有一个Java Apache camel拦截,更新所有RouteBuilder的交换消息,然后继续,java,jms,apache-camel,enterprise-integration,Java,Jms,Apache Camel,Enterprise Integration,我有一个配置,它配置了15条路线 public class CamelRoutesConf extends CamelConfiguration { @Override public List<RouteBuilder> configure() { List<RouteBuilder> routes = super.routes(); routes.forEach(router -> {
配置
,它配置了15条路线
public class CamelRoutesConf extends CamelConfiguration {
@Override
public List<RouteBuilder> configure() {
List<RouteBuilder> routes = super.routes();
routes.forEach(router -> {
router.onException(Exception.class).delay(5000);
});
return routes;
}
}
目的是在所有交换消息之间使用相同的id,以便以后更容易关联它们
那么,在CamelConfiguration#configure
中是否有一种驼峰方式来实现这一点,以便它适用于所有路线
s
我期望拦截如下
public class CamelRoutesConf extends CamelConfiguration {
@Override
public List<RouteBuilder> configure() {
List<RouteBuilder> routes = super.routes();
routes.forEach(router -> {
router.interceptFrom().process(headerProcessor)
router.onException(Exception.class).delay(5000);
});
}
}
公共类camelRouteConf扩展CamelConfiguration{
@凌驾
公共列表配置(){
List routes=super.routes();
路由。forEach(路由器->{
router.interceptFrom()进程(headerProcessor)
路由器.onException(Exception.class).delay(5000);
});
}
}
它将被接受,但似乎不会在每个RouteBuilder
中继续使用.to()
工具书类
您可以使用该子句为所有路由设置标题值
// intercept all incoming routes and do something...
interceptFrom().setHeader(JMSCorrelationId", randomNumberOfLength10());
使用
.interceptFrom().process(myProcessor)
以及CamelRoutesConf#configure
尝试了类似的方法。但根本不拦截。在.from().to()之后执行在每个RouteBuilder
sInteresting中,这实际上是可行的。让我进一步挖掘,以便使其可测试。interceptFrom()在拦截.from()
后,是否继续routeBuilders.to()
的原样?我认为它不是这样工作的??我的目标是截取来自(队列)
的,然后将头添加到exchange并继续执行。到(队列)
。我也尝试了“direct:addCorrelationId”
,但没有成功
// intercept all incoming routes and do something...
interceptFrom().setHeader(JMSCorrelationId", randomNumberOfLength10());