2016-12-09 2 views
0

Ich bekomme so seltsames Verhalten von Camel Multicast. Sieht so aus, als würde ich etwas falsch machen, kann es aber nicht zeigen.Camel Multicast verhält sich seltsam

Ich schaffe eine Multicast-Route zu zwei Endpunkten, wie unten:

Start point : direct://start 
endpoint : direct://route1 
endpoint : direct://route2 

Routes info:

1) from("direct://start").process(new DeepCloneRequest()).multicast(new Aggregator()).to("direct://route1","direct://route2")

2) from("direct://route1").setheader(<to use later in processor>).process(<do some preprocessing>).to("rest url1").processor(<to do post processing>).end

3) from("direct://route2").setheader(<to use later in processor>).process(<do some preprocessing>).to("rest url2").processor(<to do post processing>).end

Was ich nicht Eis ist das in meiner Route Nummer 3 in Preprocessing habe ich den Austausch von Nummer 2 Vorverarbeitung statt DeepCloneRequest von Multicast.

Kann mir bitte jemand helfen, dies zu erklären? Ich möchte die gleiche Anfrage erhalten, dass Multicast in Route 2 und 3 erhalten.

Die Camel-Version, die ich verwende, ist 2.17.3.

Antwort

1

Sie sollten die onPrepare Funktion verwenden, siehe http://camel.apache.org/multicast.html

„Die Multicast wird jede Kopie der Quelle Exchange und Multicast kopieren. Doch die Kopie ist eine flache Kopie, so falls Sie mutateable Nachrichtenkörper haben, dann Alle Änderungen werden durch die anderen kopierten Nachrichten sichtbar. Wenn Sie eine tiefe Klon Kopie verwenden möchten, dann müssen Sie eine benutzerdefinierte onPrepare verwenden, die Sie über die Prozessor-Schnittstelle ermöglicht. "

Verwandte Themen