2016-07-16 10 views
-1

Ich möchte, dass die onCompletion auftreten, nachdem alle aggregierten Austausche, die durch die Vervollständigungsgröße gefolgt von Timeout ausgelöst werden, verarbeitet werden. Es tritt jedoch direkt nach der Abschlussgröße auf, wenn einige der Austauschvorgänge von den Zeitüberschreitungskriterien ausgelöst werden.Apache Camel Aggregator in Kombination mit onCompletion

+0

Ich bin nicht klar, was Sie fragen. Können Sie einen Beispielcode bereitstellen, der das Problem reproduziert und erläutert, was Sie erwarten? –

+0

Möchten Sie sagen, dass Sie mehrere Abschlussbedingungen angegeben haben und die aggregierte Ausgabenachricht ausgelöst wird, wenn die Abschlussbedingung EITHER erfüllt ist. Stattdessen möchten Sie, dass es ausgelöst wird, wenn BEIDE Abschlussbedingungen erfüllt sind. Ist das richtig? –

+0

Da meine Klärung zu groß für einen Kommentar ist, habe ich es als Antwort getan – Eric

Antwort

0

Ich habe die Strecke konfiguriert ist, wie

aus (fromEndPoint) .onCompletion() .doSomething() .split() // jeder Zeile .streaming() .parallelProcessing() .unmarshal() .bindy .aggregate() .completionSize (100) .completionTimeout (5000) .TO (toEndpoint)

übernehmen, wenn die Spaltung auf 405 Linien, die ersten 4 Sätze von aggregierten getan wurde die Börsen gehen zum Endpunkt, der 400 Linien (Börsen) abschließt. Und dann löst es sofort die onCompletion aus. Es gibt jedoch noch 5 weitere aggregierte Austauschvorgänge, die ausgelöst werden, wenn die completionTimeout-Kriterien erfüllt sind. Es hat die onCompletion nicht ausgelöst, nachdem die 5 Austauschvorgänge an den Endpunkt weitergeleitet wurden.

Meine Frage hier ist, entweder die onCompletion sollte für jeden Austausch oder einmal einmal ausgelöst werden.

Hinweis: - Mein von Endpunkt ist hier eine Datei.