2017-01-10 3 views
0

Ich habe ein ProducerTemplate. Mit der Vorlage möchte ich eine Nachricht an eine Route senden. Innerhalb der Route möchte ich die Nachricht bearbeiten und dann möchte ich das Ergebnis zurückbekommen.Zurück zum Produzenten

Der Hersteller:

String response = producerTemplate.requestBody("direct:start", message, String.class); 

Die Route:

from("direct:start").process(...).to(?); 

Die Frage ist, wie soll der Weg aussehen, die Antwort nach dem Prozess zu bekommen?

+1

Nun, Sie müssen nichts tun. Sie sollten die Antwort zurückbekommen, da es sich um einen "direkten" Endpunkt handelt. Was passiert, wenn Sie es ausführen? Hast du das erwähnte Austauschmuster zu "InOut" geändert? –

Antwort

1

Es gibt zwei Denkweisen beim Nachdenken über die Antwort von einer Route. Einer ist das traditionelle Request/Reply Muster. Dies wäre am besten geeignet, wenn auch der letzte Schritt in der Route diesem Muster folgt. Der typische Fall wäre ein Web-Service-Aufruf oder eine HTTP-Anfrage. Wir würden erwarten, dass diese Komponenten etwas zurückgeben,, und das wäre der Wert, der von der requestBody Methode zurückgegeben wird.

Die andere ist eine traditionelle Einweg-Route zu nehmen und einfach die letzte Out Nachricht zurückgegeben. Dies würde durch Setzen der Exchange Pattern auf InOut erfolgen. Ein häufiger Anwendungsfall hierfür könnte die Bestätigung sein, dass die im letzten Schritt platzierten Daten bestimmte Kriterien erfüllen, oder vielleicht zu Prüfzwecken.

Verwandte Themen