CamelConfiguration
15 を構成するがありますRoutes
。
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;
}
}
私が達成したいMessage
のは、ルート内のすべての着信( )のヘッダーをチェックし、exchange.getHeaders()
存在しない場合はヘッダーを追加することです。
Processor
each 内で使用してそれを達成できますRouteBuilder
。元。
public class ArtistHiredRouteBuilder extends RouteBuilder {
@Override
public void configure(){
from(incomingArtistsQ)
.process(new Processor(){
public void process(Exchange exchange){
exchange.getIn().setHeader("JMSCorrelationId", randomNumberOfLength10());
}
})
.to(outgoingArtistsQ)
}
目的は、すべての交換メッセージ間で同じ ID を使用することです。これにより、後でそれらを簡単に関連付けることができます。
それで、すべてのsCamelConfiguration#configure
に適用されるように、これを行う Camel の方法はありますか。Route
以下のようにインターセプトを期待していました。
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);
});
}
}
.to()
傍受されますが、それぞれで続行されないようですRouteBuilder
。
参考文献
http://camel.apache.org/intercept.html
http://www.davsclaus.com/2009/05/on-road-to-camel-20-interceptors-round.html