2017-07-07 2 views
1

何らかの条件に基づいてラクダのコンテキストに追加するルートを制限する必要があります。 Tried RoutePolicy.onStart - >しかし、このメソッドはルートの開始後に呼び出されています。いくつかの条件に基づいてラクダのコンテキストにルートを追加することを無効にする

ラクダの文脈に生成/追加されるルートを完全に避ける方法が必要です。

private List<String> eligibleRoutes; 

@Override 
    public void onStart(Route route) { 
    LOGGER.info("onInit for {}", route.getId()); 
    if (isCollectionNotEmpty(eligibleRoutes)) 
    { 
     LOGGER.info("route-start eligibility for route {}", route.getId()); 
     if (eligibleRoutes.contains(route.getId())) 
     { 
     LOGGER.info("Route-start is set to ELIGiBLE for {}", route.getId()); 
     }else{ 
     LOGGER.info("Route-start is set to NOT ELIGiBLE for {}", route.getId()); 

     route.getRouteContext().getCamelContext().stopRoute(route.getId()); 
     boolean status = route.getRouteContext().getCamelContext().removeRoute(route.getId()); 
     return; 
     } 
} 
+0

Spring統合を使用しているか、 'CamelContext'を自分で作成して管理していますか?コード内のコンテキストにルートはどのように追加されますか? –

+0

青写真を使用してcamelContextとルートを作成します。私は複数のルートを持っており、適格である場合にのみそれらを見えるようにする必要があります。 – Venkat

+0

[Content Based Router](http://camel.apache.org/content-based-router.html)はどうですか? –

答えて

2

あなたは偽の自動起動=へのルートを設定し、その後、onInit方法であなたはそれがとにかく開始すべきかどうかを判断し、そのstartRouteメソッドを呼び出すことができます必要があります。

それとも別の方法はautoStartup=falseを持っているCamelContextを設定するには、その後、あなたがCamelContextStartedEventを待ち受けるキャメルイベントリスタBeanを持つことができ、その後、あなたが起動し、camelContext.startRoute("nameOfRoute")をコールしたいルートを見つけることが引き金です。

+0

ありがとうClaus。 CamelContextStartedEventでEventNotifierSupportを試してみましたが、それは魅力的でした。 – Venkat

関連する問題