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
添加回答
举报