使用 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}&fileExist=Append"/>
</route>
</routes>
上面我们是存储在文件中的,如果你想要你可以将它发送到其他路由或队列
<to uri="activemq:queuename?jmsMessageType=Text&exchangePattern=InOnly"/>
这个问题可能很笼统,但这正是标题所说的。
我有一个使用 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}&fileExist=Append"/>
</route>
</routes>
上面我们是存储在文件中的,如果你想要你可以将它发送到其他路由或队列
<to uri="activemq:queuename?jmsMessageType=Text&exchangePattern=InOnly"/>