使用Apache Camel发出http请求

时间:2019-02-12 14:55:58

标签: apache rest apache-camel

我在使用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中获取一些数据,但是现在我只是遇到构建失败。

1 个答案:

答案 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}")
    }
}