2016-02-27 84 views
0

我正在學習如何使用駱駝的過程。我有下面的代碼片段的一個問題:Apache Camel BindException:「無法分配請求的地址」

@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") ; 

    } 
} 

所報告的錯誤是:在線程「異常‘主要的’java .net.BindException:無法分配請求的地址'

有人能幫忙嗎?

謝謝

+0

整個堆棧跟蹤嗎? – prabugp

回答

5

當作爲消費者使用時,jetty組件創建一個HTTP服務器,監聽HTTP請求,並創建這個請求的交換。

換句話說,當你做from("jetty:http://cdn2.feefo.com/.."),你要求碼頭創建一個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") 
    ... 
+1

謝謝!這工作!非常感激 – iammat