Apache Camel BindException:“无法分配请求的地址”

时间:2016-02-27 12:18:07

标签: java apache apache-camel

我正在学习如何使用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:无法分配请求的地址'

有人能帮忙吗?

谢谢

1 个答案:

答案 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")
  ...