У меня есть приложение Camel, и я пытаюсь выполнить некоторую агрегацию на основе некоторых результатов из разных ответов (веб-службы REST).Агрегация верблюдов с маршрутами REST
Это то, что я до сих пор (маршруты Camel):
@Component
public final class AggregationRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
rest("/aggregation")
.get()
.to("direct:retrieve");
from("direct:retrieve")
.multicast(/*new BodyAggregationStrategy(), true*/)
.to("direct:foo")
.to("direct:foo1");
from("direct:foo")
.to("seda:http://graphical.weather.gov/xml/sample_products/browser_interface/ndfdXMLclient.php?sector=conus")
.to("direct:aggregate");
from("direct:foo1")
.to("seda:http://graphical.weather.gov/xml/sample_products/browser_interface/ndfdXMLclient.php?sector=conus")
.to("direct:aggregate");
from("direct:aggregate")
.aggregate(header("id"), new BodyAggregationStrategy())
.log(LoggingLevel.WARN, simple("${body}").getText());
}
}
... "агрегация стратегии"
public final class BodyAggregationStrategy implements AggregationStrategy {
@Override
public Exchange aggregate(final Exchange oldExchange, final Exchange newExchange) {
if (null == oldExchange) {
return newExchange;
}
String oldBody = oldExchange.getIn().getBody(String.class);
String newBody = newExchange.getIn().getBody(String.class);
oldExchange.getIn().setBody(oldBody + "+" + newBody);
return oldExchange;
}
}
... в конце концов, веб-службы собираются быть другим, но я просто пытаюсь теперь увидеть, смогу ли я сначала решить эту основную проблему.
Я определил конечную точку REST, когда GET /aggregation
ударил (по мою сторону), я хочу проконсультироваться с двумя или более REST веб-служб и агрегировать ответ от тех, затем «ответьте» назад.
Любые подсказки?
Посмотрите на шаблон Scatter-Gather https://camel.apache.org/scatter-gather.html – ltsallas
Я согласен с обоими @Itsallas & Claus, если ваши вызовы отдыха будут последовательными, тогда подумайте о сохранении каждого ответов в заголовке/свойстве, а затем агрегировать значения с использованием простого процессора. – gnanagurus