我正在学习如何使用Camel。我遇到以下代码片段的问题:
@SpringBootApplication
public class FeefooExampleApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(FeefooExampleApplication.class, args);
CamelContext camelContext = new DefaultCamelContext();
camelContext.addRoutes(new CamelConfig());
camelContext.start();
Blah blah = new Blah();
blah.getFeefoData();
}
}
我的CamelConfig类如下:
package com.example.camel;
import com.example.feefo.FeedbackProcessor;
import org.apache.camel.builder.RouteBuilder;
public class CamelConfig extends RouteBuilder {
private FeedbackProcessor feedbackProcessor = new FeedbackProcessor();
@Override
public void configure() throws Exception {
from("jetty:http://cdn2.feefo.com/api/xmlfeedback?merchantidentifier=example-retail-merchant")
.convertBodyTo(String.class)
.bean(feedbackProcessor, "processFeedback") ;
}
}
报告的错误如下:'线程中的异常“main”java.net.BindException:无法分配请求的地址'
有人能帮忙吗?
谢谢
答案 0 :(得分:5)
当用作使用者时,jetty
组件创建HTTP服务器,侦听HTTP请求,并使用此请求创建交换。
换句话说,当你执行from("jetty:http://cdn2.feefo.com/..")
时,你要求jetty创建一个HTTP服务器,其网络接口与“cdn2.feefo.com”相关联:这失败了(好吧,我假设你的机器是不是这个主持人)
如果要请求此HTTP地址,则必须使用jetty(或http4组件)作为生产者。例如:
from("direct:check_xmlfeedback")
.to("jetty:http://cdn2.feefo.com/api/xmlfeedback?merchantidentifier=example-retail-merchant")
...
并通过以下方式致电您的路线:
context.getProducerTemplate().requestBody("direct:check_xmlfeedback", null);
如果您想定期轮询此HTTP地址,可以使用timer
组件:
from("timer:check?period=5m")
.to("jetty:http://cdn2.feefo.com/api/xmlfeedback?merchantidentifier=example-retail-merchant")
...