Я довольно новый с Camel. Я пытаюсь получить данные из http-источника. Вот мой код:Apache camel простой пример http
from("timer://runOnce?repeatCount=1")
.to("http4://webservice.com/example.xml")
.process(new structureXML())
.to("mock:resource")
.stop();
И:
class structureXML implements Processor {
public void process(Exchange httpExchange) throws Exception {
String httpres = httpExchange.getIn().getBody(String.class);
String[] lines = httpres.split("\n");
Pattern p = Pattern.compile("<Map Key='(.+)' Value='(.+)'/>");
HashMap<String, Integer> mapdata = new HashMap<String, Integer>();
for(String line : lines) {
Matcher m = p.matcher(line);
if(m.find())
mapdata.put(m.group(1), Integer.parseInt(m.group(2)));
}
httpExchange.getIn().setBody(mapdata);
}
}
Ну пример работает правильно, но я хочу знать о возможных путях дальнейшего улучшения этой ситуации (например, обработка XML с помощью XPath и т.д.), также я хочу знать о способах, которыми я могу хранить объект java внутри сообщения, поэтому я могу использовать его в другом маршруте (например: direct: resource вместо mock)
Очень подробный и полезный ответ, спасибо много – lkn2993