我想从一个非常简单的Web服务器上获取数据,该Web服务器在浏览器中被调用时会显示一个页面,向我提供一些数据。该页面会在几秒钟内自动更新,并显示:
analog input 0 is 1023
analog input 1 is 109
analog input 2 is 0
analog input 3 is 415
analog input 4 is 0
analog input 5 is 40
在最终程序中,我想从页面获取数据,并通过apache骆驼将其转换为流入时间序列。到目前为止,我了解到码头是必经之路,并按照以下步骤配置了我的路线:
public class HttpReaderRoute extends RouteBuilder {
@Autowired
private FrameworkConfig frameworkConfig;
@Override
public void configure() throws Exception {
String sourceString = "jetty:http://server.i.want.to.poll:8080/?sessionSupport=true";
String targetString = "stream:out";
// String targetString = "influxdb://influxDb?databaseName=" //
// + frameworkConfig.getInfluxDb().getDatabaseName() //
// + "&retentionPolicy=" //
// + frameworkConfig.getInfluxDb().getRetentionPolicy();
System.out.println(sourceString);
from(sourceString)
.log("Received data server") //
.to(targetString);
}
}
但是,我得到的是org.apache.camel.RuntimeCamelException: java.net.BindException: Cannot assign requested address
或-如果我跳过使用jetty:http:server.i.want.to.poll:8080
的格式,则会得到“权限被拒绝”。
相关的配置类如下:
@Configuration
public class HttpClientConfig {
@Bean
public PoolingHttpClientConnectionManager poolingConnectionManager() {
PoolingHttpClientConnectionManager poolingConnectionManager = new
PoolingHttpClientConnectionManager();
poolingConnectionManager.setMaxTotal(10);
return poolingConnectionManager;
}
}
也许值得一提的是我正在使用spring.boot。
我在做什么错?
[您是否正在尝试从我们使用Apache Camel服务的现有数据中轮询数据?如果是,则应使用HTTP4 Component而不是Jetty componet。
这是使您尽快进入下一步的快速答案。您可以执行类似的操作
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
支持。这意味着码头不能再执行HTTP客户端功能。
from("jetty:http://server.i.want.to.poll:8080/?sessionSupport=true")
开头。该代码实际上设置了一个HTTP Server(或使用Camel术语的Consumer,如here in old docs所示)。在OP的测试基础结构中很有可能:server.i.want.to.poll
是localhost
java.net.BindException
from("direct:start").to("jetty://http://www.google.com")
之类的路由。但是,我建议您酌情坚持使用HTTP / HTTP4组件。PS:我的测试设置是运行Camel 3.0.0-M4
的Spring引导应用程序>