使用 Camel 和 Spring 调用外部 REST API

Invoke external REST API using Camel and Spring

这个问题可能很笼统,但这正是标题所说的。

我有一个使用 HTTPS 的外部 API,我需要在 Camel 路由中调用它来获得一些 JSON 响应,但是,我似乎找不到一个好的方法来做到这一点。

我试过 Camel 的组件 'restlet' 来调用 API 但没有成功。我尝试使用需要设置 bean 的 CXFRS,据我所知,这又需要 'serviceClass'。显然 API 是一个 third-party 外部服务,没有办法提供它。

有没有人有任何想法或方向可以指出我仅调用外部 REST API,其中 returns 一个 JSON 响应?

非常感谢。

好吧,原来我完全糊涂了!

@Component

public class WeatherRESTRoute 扩展了 RouteBuilder {

@Override
public void configure() throws Exception {
    from("timer:aTimer?fixedRate=true&period=10s")
            .setHeader(Exchange.HTTP_METHOD, constant("GET"))
            .to("ahc:https://restcountries.p.mashape.com/callingcode/90")
            .routeId("TEST")
            .log("${body}");
}

根据我的问题和麻烦,这是工作路线我在 .from 中有 REST API URL 意味着我想将其公开为 REST 端点而不是调用它。

我在阅读下面链接的邮件列表时明白了我的意思。

http://camel.465427.n5.nabble.com/Making-Periodic-HTTP-Request-Using-Timer-td5749336.html

P.S.Thank 你@6ton 我已经尝试过那个页面上的解决方案了。

将 spring DSL 与定时器组件一起使用

 <?xml version="1.0" encoding="UTF-8"?>
    <routes xmlns="http://camel.apache.org/schema/spring"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">    
    <route id="fetchdata">
            <from uri="timer:somename?period=24h"/>
            <toD uri="https://some/api/xxx?httpMethod=GET"/>
            <to uri="file://abcd?fileName=${exchangeId}&amp;fileExist=Append"/> 
        </route>
    </routes>

上面我们是存储在文件中的,如果你想要你可以将它发送到其他路由或队列

    <to uri="activemq:queuename?jmsMessageType=Text&amp;exchangePattern=InOnly"/>