2013-01-07 12 views
8

Was ist die "Einheit der Beförderung" oder Fluss in einer Apache Camel Route? Was bedeutet das Objekt, das tatsächlich geroutet wird? A Message? Ein Exchange?Apache Camel: Was wird gerade geroutet?

Ich frage, weil ich gedacht, dass ein Route von 1+ Processor Endpunkte bestanden, und dass ein Exchange war (ein Message enthält), was über alle Endpunkte wird tatsächlich weitergeleitet.

Aber es scheint, dass Exchange sowohl eine eingehende haben kann und ein Outbound Message, die die Nachrichten können bewegen sich durch Tauschbörsen (wie den Austausch gegen durch Prozessoren/Endpunkte bewegen). Kann jemand bei der Klärung helfen, warum Austauschvorgänge eingehende und ausgehende Nachrichten enthalten und welche Routen tatsächlich an jeden Prozessor/Endpunkt weitergeleitet werden?

Antwort

5

Der Austausch ist einfach ein Wrapper-Objekt um Nachrichten in einer einzigen Route.

die IN- und OUT-Nachrichten in einem Austausch verwendet wird, um verschiedene Austauschmuster (MEP) zu handhaben.

Normalerweise ist dies in den Prozessoren/Endpunkte verwendet, die eine Antwort zurück (das heißt, die Anforderung/Antwort-Muster), in Camel es InOut benannt ist. Dann würde der Prozessor/Komponente die Anforderung von den In Parametern lesen und die Antwort in den Out Parametern eingestellt. Im nächsten Schritt in der Route würde Out In werden.

Wenn Sie eine Nachricht irgendwo und sich keine Sorgen über die Antwort setzen möchten, können Sie ExchangePattern.InOnly verwenden.

Auch wenn Sie in einem Prozessor und wollen die Nachricht zu transformieren, die Sie auf der In-Nachricht arbeiten können, und es wird auf Out kopiert werden.

Dies spiegelt sich auch in dem Buch Camel in Aktion Kapitel 1 beschrieben

Die Routen rund um die Botschaft sind vorbei, und der Exchange ist ein Zugriffsobjekt, das die Nachricht zu übergeben und Zugriff auf eine globale Metadaten verwendet wird.