2017-08-02 2 views
1

Ich muss eine Nachricht an mehrere Empfänger senden und dann mit der Route nach einem dynamischen Zeitüberschreitungswert fortfahren (d. H. Ein Wert, der für jeden Austausch unterschiedlich ist) - unabhängig davon, ob einer oder mehrere der Empfänger etwas zurückgeben konnten. Ich dachte, ich könnte dies über ein Multicast durchführen, wo einer der Zweige ein Timer ist, aber ich kann nicht scheinen, eine Methode zu finden, Multicast zu beenden, wenn ein Zweig ankommt, den anderen Zweig ignorierend. Es ist in etwa vergleichbar mit der completionSize vielleicht, aber die passende EIP für meinen Fall ist Multicast, also bevor ich die hässliche Lösung denke, fragte ich ...Gibt es in Camel Multicast eine Möglichkeit zum Beenden, bevor alle Empfänger zurückgegeben wurden?

+0

[Multicast] (http://camel.apache.org/multicast.html) hat bereits eine 'timeout'-Einstellung, also was fehlt mir? – Morfic

+0

Es ist nicht dynamisch. Sie können es nicht basierend auf einem Ausdruck ändern. – Deroude

Antwort

0

Ich denke, wenn Aggregator erste Daten empfangen, senden Aggregator Nachricht an nächste Route mithilfe der Herstellervorlage

+0

Aggregator ist eine Lösung, aber nach meinem Verständnis ändert es den Fluss vollständig. Ich möchte die gleiche Nachricht an mehrere Empfänger (wie Multicast oder Empfängerliste) senden, dann auf eine dynamische (Austausch basierte) Zeit warten und nur mit den verfügbaren Antworten fortfahren, den Rest verwerfen (aber nicht auf sie warten). Mit Aggregator muss ich jeden Empfänger als separate Route haben. – Deroude

Verwandte Themen