1 回答

TA貢獻1869條經驗 獲得超4個贊
您是否正在嘗試使用 Apache Camel 從某些現有 Web 服務輪詢數據?如果是,您應該使用HTTP4 組件而不是Jetty 組件。
這是讓您盡快進入下一步的快速答案。你可以做類似的事情
from("timer:hello?period=2000").routeId("test_route") .to("http4://example.com/") .log("${body}") .to("file:target/messages");
添加依賴后
?<dependency> ??<groupId>org.apache.camel</groupId> ??<artifactId>camel-http4</artifactId> ??<version>X.X.X</version> ?</dependency>
我們需要在這里進一步挖掘,因為人們遇到同樣問題的可能性很高,因為CAMEL-13220已于 2019 年 6 月刪除了Producer
對 jetty 組件的支持。這意味著 Jetty 無法再執行 HTTP 客戶端功能。
代碼示例中的路由以 開頭
from("jetty:http://server.i.want.to.poll:8080/?sessionSupport=true")
。該代碼實際上設置了一個 HTTP 服務器(或 Camel 術語中的消費者,如舊文檔中所示)。很可能,在 OP 的測試基礎設施中:server.i.want.to.poll
是localhost
還有一些其他服務正在偵聽 8080,可能是該服務 OP 正在嘗試連接。這可能就是導致
java.net.BindException
過去,Jetty 組件可以用作生產者和消費者。如果 OP 使用 2.x 版本的 Camel,仍然可以使用 Jetty 組件作為 HTTP 客戶端(生產者),其路由類似于
from("direct:start").to("jetty://http://www.google.com")
.?但是,我建議堅持使用 HTTP/HTTP4 組件(如果適用)。
PS:我的測試設置是一個 Spring boot 應用程序,正在運行Camel 3.0.0-M4
添加回答
舉報