2016-04-19 2 views
0

Ich schreibe aus der Camel und Spring Welt!Apache Camel, Routen hinzugefügt werfen nicht OnException

Ich füge Routen programmgesteuert mit dieser recipe hinzu.

Grundsätzlich erhalten Sie den Kamel Kontext und fügen Sie Ihre Routen mit einer Datei.

Dies ist das Problem:
Die zur Laufzeit hinzugefügten Routen lösen keine OnException aus, die in der von Spring gelesenen Kontextdatei festgelegt ist.

Zur Erinnerung:

  1. ich eine Feder Kontext-Datei, die wie folgt aussieht:
<camel:camelContext> 
    <onException id="exceptions"> 
    <handled> 
     <constant>true</constant> 
     </handled> 
     <process ref="logExceptionProcessor"/> 
     <to uri="activemq:adapterLOG"/> 
     <process ref="mailSender"/> 
    </onException> 
    ... 
  1. Nachdem ich habe meine Route hinzugefügt bekommen die camel context, die hinzugefügte Route wirft nicht den OnException Satz.

Haben Sie einen Rat zu diesem Verhalten?

Antwort

1

Es gibt zwei verschiedene Bereiche für Fehlerhandler, die Sie verwenden können. Der erste ist ein Fehlerhandler auf Route-Ebene, der die Fehlerbehandlung nur für diese Route verwaltet, und der zweite ist die globale Fehlerbehandlung für alles in diesem Kontext. Wenn Sie ein paar weitere Details erhalten möchten, gehen Sie zum Abschnitt "Bereiche" in der Dokumentation.

http://camel.apache.org/error-handler.html 

Für Ihren Anwendungsfall, wenn in den Routen laden Sie nutzen zu können, um einen globalen Fehlerhandler nicht, weil die Routendefinition aus dem Kontext getrennt erstellt und dann zur Laufzeit hinzugefügt. Das bedeutet, dass Sie eine Fehlerbehandlung für jede separat geladene Route definieren müssen. Hinweis: das bedeutet nicht, dass Sie Ihre eigene allgemeine Fehlerbehandlungsrichtlinie nicht erstellen können und jede Ihrer Routen das verweisen kann.