Ich versuche, die Antwort von einem REST-Webservice abzurufen gehostet http://localhost:8089/mock/success
und schreiben Sie die Antwort auf eine Datei mit Camel
. Hier ist der Weg, den ich in Java geschrieben habe für die gleichgeschlechtlichenWie schreibe Web-Service-Antwort auf Datei mit Kamel?
from("direct:start")
.to("http://localhost:8089/mock/success")
.to("file://D:/tmp/restoutput");
hier, wie ich bin Berufung auf diese Routen-
CamelContext ctx = new DefaultCamelContext();
RouteBuilder routebuilder = new RestToFileRoute();
System.out.println("invokeRestToFileRoute() started.");
try {
ctx.addRoutes(routebuilder);
ctx.start();
Thread.sleep(1000);
ctx.stop();
} catch (Exception e) {
e.printStackTrace();
}
Ich habe keine Ausnahmen bekommen, aber nichts in die Datei hinzugefügt . Ich bin ziemlich neu in Camel, daher kann ich das Problem nicht erraten. Kann mir jemand dabei helfen?
Mit dem Timer basierend auf Vorschlägen, bekomme ich Null Zeiger Ausnahme beim Schreiben in Datei. Hier ist die modifizierte Code-
from("timer://simpleTimer?repeatCount=1")
.to("http://localhost:8089/mock/success")
.process(exchange -> {System.out.println("Message: " + exchange.getOut().getBody(String.class));}) // Output: "Message: null"
.to("file://D:/tmp/restoutput");
Wie @claus Erwähnungen, wie soll Ihre Route ausgelöst werden? Direktstart ist nur eine In-Memory-Warteschlange. Etwas muss darauf gelegt werden. Der Einfachheit halber können Sie einfach eine Datei auswählen, in der Route verwerfen und fortfahren. Oder verwende einen Timer. –
@SoucianceEqdamRashti: Ich kann den Timer nicht verwenden. Was "direct: start" betrifft, habe ich die Dokumentation falsch interpretiert. – Abhishek
Fügen Sie Protokollanweisungen nach der ersten .to() hinzu und sehen Sie, was der Text und die Header enthalten, bevor Sie sie in die Datei schreiben. Was meinst du, der Timer funktioniert nicht? Es wird nicht ausgelöst? –