2017-07-28 3 views
0

Ich habe folgenden Weg, in dem ich nur nach Abschluss der Datenbank einzufügen Aufgabe protokollieren möchte.Camel onCompletion funktioniert nicht wie erwartet

from("file:src/data?noop=true").unmarshal(jaxb) 
.bean(SetQueryParameterToMap.class) 
.to("sql:{{insertData}}?dataSource=myDataSource")         
.onCompletion().log(" Inserted time " + new Date()).end(); 

Aber die Log-Nachricht wird oft gedruckt, anstatt nur einmal zu drucken. Ich hatte mit onCompleteOnly auch versucht, aber keine Wirkung. Ist das das erwartete Verhalten oder fehlt mir hier etwas?

Antwort

1

OnCompletion wird nicht verwendet, um festzustellen, wann eine einzelne Aufgabe abgeschlossen wurde. Da die SQL-Komponente trotzdem im selben Thread ausgeführt wird, wird sie beendet, bevor Sie mit dem nächsten Schritt in Ihrer Route fortfahren. Entfernen Sie einfach die .onCompletion (und das .end).

Verwandte Themen