Я пытаюсь получить ответ от веб-службы REST, размещенной на http://localhost:8089/mock/success
, и написать ответ на файл, используя Camel
. Вот маршрут я написал в Java дляКак написать ответ веб-службы в файл с помощью верблюда?
from("direct:start")
.to("http://localhost:8089/mock/success")
.to("file://D:/tmp/restoutput");
Вот как я это применением маршрутные
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();
}
Я не получаю никаких исключений, но ничего не добавляется в файл , Я довольно новичок в Camel, поэтому я не могу угадать проблему. Кто-нибудь может мне с этим помочь?
Используя таймер, основанный на предложениях, я получаю исключение для исключения нулевого указателя при записи в файл. Вот модифицированного код-
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");
Как @claus упоминает, как ваш маршрут должен срабатывать? direct-start - это просто очередь в памяти. Что-то нужно надеть. Для простоты вы можете просто взять файл, отбросить его на маршруте и продолжить. Или используйте таймер. –
@SoucianceEqdamRashti: Я не могу использовать таймер. Что касается 'direct: start', я неверно истолковал документацию. – Abhishek
Добавить записи журнала после первого .to() и посмотреть, что содержит тело и заголовки, прежде чем писать в файл. Что значит таймер не работает? Он не срабатывает? –