Hier ist was ich versuche zu tun. Ich habe zwei Dateien zu lesen, die diesen Inhalt hatApache Camel verschmelzen zwei Dateien von verschiedenen Routen
<Person>
<Requestor>Dinesh</Requestor>
</Person>
Um dies zu tun, habe ich eine Route
<route id="getPerson">
<from uri="file:src/main/resources/xml?noop=true"/>
</route>
Next Ich brauche eine andere Datei lesen namens Adresse
<Address>
<City>New York </City>
</Address>
Hier ist mein zweite Route
<route id="getAddress">
<from uri="file:src/main/resources/xmlAddress?noop=true"/>
</route>
Wie fusionieren ich diese beiden xmls in einer Verwendung enricher oder Aggregate die endgültige XML-Nachricht wie diese
<Person>
<Requestor>Dinesh</Requestor>
<Address>
<City>New York</City>
</Address>
</Person>
Irgendwelche Ideen aussehen zu lassen? Ich habe versucht, die Dokumentation zu folgen, aber alles, was sie sagt, wird an einige Web-Service-URI gesendet.
Das obige Szenario ist abgeschwächt Version von dem, was ich eigentlich tun möchte. Die richtige Situation für mich ist, dies zu tun- Schritt 1. Lesen Sie eine XML-Datei, Schritt 2: Rufen Sie einen Web-Service und erhalten Sie die Antwort. Schritt 3: Merge Antwort in Schritt 2 und fügen Sie es o Xml Körper in Schritt 1
EDIT 1: ich die benutzerdefinierte AggregatorStartegy Klasse schreiben kann. Ich schrieb so etwas wie diese
public class AggregationStrategy implements org.apache.camel.processor.aggregate.AggregationStrategy{
@Override
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
newExchange.getOut().setBody("<all>"
+ oldExchange.getIn().getBody(String.class)
+ newExchange.getIn().getBody(String.class)
+ "</all>");
return newExchange;
}
}
Was mit denen ich zu kämpfen, wie das Frühling xml zu schreiben, schreiben, wo ich hier sagen kann, ist, meine Nachricht oder Datei 1+ Nachricht oder Datei 2, gehen anzuschließen. Hier ist, wie meine eigentliche context.xml sieht aus wie
<camelContext id="myCamel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="file:src/main/resources/xmlPerson?noop=true"/>
<camel:to uri="direct:enrichMessage"></camel:to>
</route>
<route >
<from uri="file:src/main/resources/xmlAddress?noop=true"/>
<log message="**************RESPONSE FROM CATASK DSS:: \n ${body}" id="log_output"/>
<camel:to uri="direct:enrichMessage"></camel:to>
</route>
<route id="enrichMessage">
<from uri="direct:enrichMessage"/>
<camel:enrich strategyRef="aggregationBean" />
<log message="**************MERGED RESPONSE :: \n ${body}"/>
</route>
Also, wo genau sich der Web-Service ins Spiel kommen? – Ralf
Zum Beispiel .enrich ("http://serviceA.com?xxx") .enrich ("http: // serviceB? Xx"). Hier ist ein Beispiel. http://www.andrejkoelewijn.com/blog/2010/06/13/a-composite-rest-service-using-camel/. Es spielt keine Rolle, welche Lösung ich bekomme. Alles, was ich will, ist, zwei Dateien oder zwei Nachrichten zu einer zusammenzuführen. Ich habe diesen Beitrag modifiziert, um meine Situation zu erklären. Meine tatsächliche Situation ist - Schritt 1. Lesen Sie eine XML-Datei, Schritt 2: Rufen Sie einen Web-Service und erhalten Sie die Antwort. Schritt 3: Fügen Sie die Antwort in Schritt 2 ein und fügen Sie sie in Schritt 1 hinzu. –
Die Überschrift "Frage" wurde bearbeitet. –