我正在接收Jetty Http端点上的请求。请求主体包含请求主体中的一些URL。我必须向这些网址发送GET
请求。然后汇总每个GET
请求的结果并将其返回给调用者。骆驼 - 使用Java DSL并行GET请求并通过动态路由汇总结果
请求正文: - 我能想到这样做的
{
"data" : [
{"name" : "Hello", "url" : "http://server1"}
{"name" : "Hello2", "url" : "http://server2"}
]
}
一种方法是象下面这样: -
from("jetty:http://localhost:8888/hello").process(new Processor() {
public void process(Exchange exchange) throws Exception {
// 1. Make the GET request in parallel using ThreadPoolExecutor
// 2. Wait for all calls to finish. Collate the response
// 3. Write it to exchange.getOut().setBody
}
})
有一个人可以让我知道这是否可以通过Java DSL使用来实现骆驼动态路线,Splitter & Aggregator让Processor
保持相对较小?
我使用骆驼2.16.3。
从概念上讲,您可以拆分原始邮件,以便每封新邮件都有一个URL。这些分割请求可以通过一些处理器。之后,你可以放置一个聚合器。我想多个消息可以传入初始消费者,因此您需要弄清楚如何确定哪些URL属于哪个URL组。 –
你是从处理器建议我应该进行HTTP调用或连接处理器与一些'()'? – tuk
不一定。我以这种方式构建它,因为你的例子展示了一个处理器执行GET操作。您可以使用骆驼组件之一:http,http4,甚至cxfrs或spring-ws,...以最简单的方式满足您的需求。 –