0

这个问题可能是通用的,但它正是标题所说的。

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

我尝试了 Camel 的组件“restlet”来调用 API,但没有运气。我尝试使用需要设置 bean 的 CXFRS,据我所知,这又需要一个“serviceClass”。显然,API 是第三方外部服务,因此无法提供。

有没有人有任何想法或方向可以指出我只需调用一个返回 JSON 响应的外部 REST API?

非常感激。

4

2 回答 2

1

好吧,事实证明我完全糊涂了!

@Component

公共类 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,在 Camel 领域意味着我想将其公开为 REST 端点而不是调用它。

在阅读下面链接的邮件列表时,我能够明白自己的意思。

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

PS谢谢@6ton,我已经尝试过该页面上的解决方案。

于 2015-06-30T13:50:54.953 回答
0

使用带有计时器组件的 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"/>
于 2019-12-24T13:16:16.527 回答