Ich habe einen einfachen dynamischen Router einrichten:Legendes Apache Camel Dynamisches Routing
public String slip(String body, @Header(Exchange.SLIP_ENDPOINT) String previous) {
if (previous == null) {
return "mock:a";
}
else if (body.contains("status=2")) {
return "mock:b";
}
else if (body.contains("status=3")) {
return "mock:c";
}
// no more so return null
return null;
}
Mock a, b, c sind Routen mit kundenspezifischen Prozessoren.
public void process(Exchange exchange) throws Exception {
String str_request = "";
String str_requestNew = "";
str_request = (String) exchange.getIn().getBody();
if(str_request.contains("status=1"))
str_requestNew = "status=2";
}
Wie ich den Nachrichtentext zwischen Strecken in meinem benutzerdefinierten Prozessor über Java DSL aktualisiere. exchange.getOut(). SetBody (newreq); ?
Muss ich einen neuen Producer erstellen und die Nachricht zurück an den dynamischen Router senden? ProducerTemplate-Vorlage = exchange.getContext(). CreateProducerTemplate(); template.sendBody (myDynamicRouterEndpoint, newreq); oder wird mein Router den neuen Körper abholen, wenn Sie über das Verfahren 1.
Oder gibt es einen großen Fehler alle zusammen in meiner Logik? :)
Ah ok. das ist hilfreich, danke. Muss ich über "to (routerEndpoint)" zurück zum dynamischen Router routen oder wird Camel das automatisch tun, solange der Body aktualisiert wird? – esimran
Ja Camel ruft den dynamischen Router an, bis Ihre Bean null zurückgibt. Null ist das Signal zur dynamischen Route, das ist getan. Wenn Sie eine Kopie des Buches Camel in Action haben, lesen Sie Kapitel 8, wo dieses Muster behandelt wird, und wir haben eine Anzahl von Beispielen im Quellcode, die Sie ebenfalls betrachten können. Und die Dokumentation bei Apache enthält auch einige Berichte und Beispiele: http://camel.apache.org/dynamic-router –