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