我在使用Apache Camel时遇到了麻烦。我正在尝试建立一条向公共API发出http请求的路由。我正在使用现成的项目模板,并且所有POM依赖项都应该正确。这是我的路线代码:
import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;
@Component
public class Routes extends RouteBuilder {
@Override
public void configure() {
from("https://rata.digitraffic.fi/api/v1/train-
locations/latest/")
.description("Hello world -route")
.log("Hello world!")
.to("mock:out");
}
}
所以我期望从API中获取一些数据,但是现在我只是遇到构建失败。
答案 0 :(得分:4)
我认为您不能在from()
中使用URL请求。
您需要创建一条来自其他事件的路由,例如Timer或使用来自JMS的消息。
要使用Apache Camel发出HTTP请求,我使用组件HTTP4并在to()
上声明请求。
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-http4</artifactId>
<version>${camel.version}</version>
</dependency>
在下面的带有Timer组件的示例中,该组件每15秒启动一次,并发出HTTP请求。
@Component
public class Routes extends RouteBuilder {
@Override
public void configure() {
from("timer:SimpleTimerName?period=15s")
.description("Hello world -route")
.log("Hello world!")
.to("https4://rata.digitraffic.fi/api/v1/train-locations/latest/");
.log("This is the status code from the response: ${header.CamelHttpResponseCode}")
.log("This is the return: ${body}")
}
}