2017-11-14 2 views
0

Wenn ein bestimmter Endpunkt nicht verfügbar ist (zum Beispiel 500), wird meine Warteschlangendatei in das .error-Verzeichnis verschoben. Ich verwende dafür den Parameter: moveFailed.Apache Camel: Datei Komponente moveFailed Redelivery-Strategie

<from uri="file:inbox?autoCreate=true&amp;readLockTimeout=2000&amp;charset=utf-8&amp;preMove=.processing&amp;delete=true&amp;moveFailed=.error&amp;maxMessagesPerPoll=50&amp;delay=1000"/> 

Nach: http://camel.apache.org/file2.html

Wenn die Dateien zu bewegen, um die „nicht bestanden“ Standort Camel die Fehler behandeln und wird die Datei nicht wieder abholen.

Welcher Ansatz eignet sich am besten für die Implementierung einer Richtlinie/Strategie für die erneute Zustellung, damit die Dateien bei einem Fehler wieder aufgenommen werden?

Antwort

2

Richten Sie eine Wiederholung ein, indem Sie erneut an diese bestimmte Endpunktkomponente und nicht an die gesamte Route senden.

Sie können dies tun, indem Sie die Anzahl der Wiederholungen angeben, eine Verzögerung zwischen Wiederholungen und einen Backoff-Multiplikator, wenn Sie dies wünschen, indem Sie eine error handler verwenden.

onException(RestException.class) 
      .maximumRedeliveries(3) 
      .redeliveryDelay(100L) 
      .backOffMultiplier(1.5) 

Oder dieser Zusammenhang in Ihrem Kamel Einstellung:

<errorHandler id="errorhandler" redeliveryPolicyRef="redeliveryPolicy"/> 
<redeliveryPolicyProfile id="redeliveryPolicy" maximumRedeliveries="3" redeliveryDelay="100" backOffMultiplier="1.5" retryAttemptedLogLevel="WARN"/> 

Auf diese Weise wird die Datei nur auf die Fehler-Ordner geliefert, sobald es aus redelivery Versuchen ausgeführt wird.

Sie können auch die dead letter handler verwenden und die Datei in eine Warteschlange stellen, um später verarbeitet zu werden.

+0

Wo geben Sie den Fehlerordner an? @AndyN – Depzor

+0

Sie haben es bereits in Ihrer Dateikomponente angegeben. Durch Zurücksenden von Versuchen in Ihrem Error-Handler wird die Dateikomponente nicht auf den Fehler aufmerksam gemacht, bis alle Zustellungsversuche erschöpft sind. Daher wird die Datei bis dahin nicht in den Fehlerordner verschoben. – AndyN

+0

Es nimmt nicht die Fehlerhandler: [GenericFileOnCompletion.processStrategyRollback: 141] Rollback-Datei Strategie: org.apache[email protected]21c3823b für Datei: GenericFile [.processing/XXX-local-39727- 1510746978560-0-999] – Depzor