2017-07-07 1 views
1

Ich muss bestimmte Routen zu den Kamel Kontext basierend auf einer Bedingung hinzugefügt werden. Versuchte RoutePolicy.onStart -> aber diese Methode wird nach dem Start der Route aufgerufen.deaktivieren Route zu Kamel Kontext basierend auf einer Bedingung hinzugefügt werden

Ich brauche einen Weg, um vollständig zu vermeiden, dass die Route zum Kamel-Kontext erzeugt/hinzugefügt wird.

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

Verwenden Sie die Spring-Integration oder erstellen und verwalten Sie den 'CamelContext' selbst? Wie wird die Route zum Kontext in Ihrem Code hinzugefügt? –

+0

Verwenden von Blueprint zum Erstellen von camelContext und Routen. Ich habe mehrere Routen und muss sie nur sichtbar machen, wenn sie infrage kommen. – Venkat

+0

Wie wäre es mit [Content Based Router] (http://camel.apache.org/content-based-router.html)? –

Antwort

2

Sie müssen die Strecke zu autoStartup = false, und dann in der onInit Verfahren einstellen können Sie bestimmen, ob es überhaupt gestartet werden soll, und seine startRoute Methode aufrufen.

Oder eine andere Art und Weise ist CamelContext zu konfigurieren autoStartup=false zu haben, und dann können Sie eine Kamel-Ereignis lister Bohne, die für CamelContextStartedEvent hören, und dann lösen Sie es um herauszufinden, welche Strecken Sie starten möchten, und die camelContext.startRoute("nameOfRoute") nennen.

+0

Danke Claus. Ich habe EventNotifierSupport mit CamelContextStartedEvent ausprobiert und es funktionierte wie ein Zauber. – Venkat

Verwandte Themen