0

Ich bin neu in Camel und bin auf der Suche nach Mustern oder Strategien, um die Verfügbarkeit eines Zielsystems in einer Camel-Route zu verwalten.Camel und Quelle/Ziel System Verfügbarkeit Strategie

Zum Beispiel sagen, ich will: - Prozess die Daten (Daten - -> targetData) Eingangsdaten von einem Dateiserver lesen - die Zieldaten (TargetData) auf eine Ziel Website mit Rast Dienstleistungen senden (nennen Sie es TargetSystem)

Meine Frage ist, was ist die beste Strategie, wenn das TargetSytem nicht aktiv ist?

Ich verstehe, dass wenn eine Route fehlschlägt, ist es möglich, den gesamten Prozess Rollback. Aber wenn TargetSystem ein externes System ist und stundenlang ausfallen kann, denke ich nicht, dass es ein guter Ansatz ist, den Prozess rückgängig zu machen, bis das Zielsystem hochgefahren ist.

Gibt es ein Muster oder eine Strategie, die gut zu diesem Problem passt?

Grüße

Gilles

Antwort

0

Dies ist das Muster, das ich mit ein paar Systeme verwenden.

  • Persist Ihre TargetData irgendwo (Datenbanktabelle, JMS-Warteschlange, Redis, ...)
  • eine Route erstellen, die nicht gesendete TargetData liest und sendet sie an Targetsystem
    • Wenn Übertragung ist OK, markiere TargetData entsprechend (zB: setze ein Flag in der Tabellenzeile, entferne es aus der Warteschlange, etc ...)
  • Eine solche Route periodisch von einem Timer und/oder anderen Routen auslösen. Sie können es sogar mit einem Shell-Befehl auslösen, um ein erneutes Senden nicht gesendeter Daten manuell zu erzwingen.

Sie können diese an Ihre Bedürfnisse anpassen und beispielsweise hinzufügen, Protokollierung geeignet, wenn, halten Spur in einer DB-Tabelle, wenn jeder vorläufige Sende auftritt, wie oft es ausgefallen ist, wie viele Wiederholungen und so weiter ...

Sie können jetzt Ihre Anwendung in 2 Module modularisieren: eine, die Daten und verarbeiten es zu TargetData und andere empfängt, das die Übertragung von TargetData zu Targetsystem verwaltet.
Module können 2 CamelContexte, 2 OSGi-Bundles, 2 völlig getrennte Java-Anwendungen bedeuten.