我目前正在使用 HTTP 方法来调用一些会创建 JIRA 问题的 URL。
现在我想使用 Apache Camel,我该如何使用呢?
我需要通过 Camel 调用以下链接:
http://localhost:8080/rest/api/2/project/" + key + /components
由于我是骆驼的新手,请也提出一些解决方案和示例。
谢谢
我目前正在使用 HTTP 方法来调用一些会创建 JIRA 问题的 URL。
现在我想使用 Apache Camel,我该如何使用呢?
我需要通过 Camel 调用以下链接:
http://localhost:8080/rest/api/2/project/" + key + /components
由于我是骆驼的新手,请也提出一些解决方案和示例。
谢谢
另请参阅有关在 Camel http://camel.apache.org/how-do-i-use-dynamic-uri-in-to.html中使用动态端点的常见问题解答
本质上,EIP 模式就是收件人列表。
因此,在您的情况下,它也可以简化为一个 EIP
<recipientList>
<simple>http://localhost:8080/rest/api/2/project/${header.myKey}/components</simple>
</recipientList>
注意 Camel 中的 http 组件是完全同步的。如果您想通过 HTTP 进行请求/回复并避免在等待回复消息时让调用者阻塞,那么您可以使用 Camel 的其他一些 HTTP 组件,例如:
您可以轻松使用CXFRS 组件;如果您出于某种原因需要使用HTTP 组件来执行此操作,您也可以轻松地使用它:
<setHeader headerName="CamelHttpUri">
<simple>http://localhost:8080/rest/api/2/project/${header.myKey}/components</simple>
</setHeader>
<inOut uri="http://doesnt.matter.we/override/it/anyways" />
当然,myKey
在到达这部分路线之前,您需要使用标题丰富您的消息。
我正在使用 apache 骆驼码头
CamelContext context = new DefaultCamelContext();
public void configure(){
context.addRoutes(new RouteBuilder(){
from("jetty:localhost:9000/offers")
.to("direct:getOffers")
.end();
}
});
因此,当用户点击http://localhost:9000/offers时,将调用端点 direct:getOffers
所以现在定义 getOffers 端点
context.addRoutes(new RouteBuilder(){
public void configure(){
from("direct:getOffers")
.to("jetty:http://localhost:9008/api/v2.0/offers?
bridgeEndpoint=true")
.end();
}
});
这里另一个服务在 9008 运行,其休息资源为 http://localhost:9008/api/v2.0/offers,这是我试图使用的资源。
因此,当骆驼实例启动时,它会注册两条路由,然后按上述方式进行处理
注意添加 ?bridgeEndpoint=true 选项以使其正常工作很重要
您可以使用骆驼使用 REST 服务CXFRS Component
。Apache camel 对此有足够的信息。