11

我目前正在使用 HTTP 方法来调用一些会创建 JIRA 问题的 URL。

现在我想使用 Apache Camel,我该如何使用呢?

我需要通过 Camel 调用以下链接:

http://localhost:8080/rest/api/2/project/" + key + /components

由于我是骆驼的新手,请也提出一些解决方案和示例。

谢谢

4

4 回答 4

9

另请参阅有关在 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 组件,例如:

  • 骆驼-ahc
  • 骆驼-http4
  • 骆驼码头
于 2012-04-16T13:12:36.007 回答
8

您可以轻松使用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在到达这部分路线之前,您需要使用标题丰富您的消息。

于 2012-04-16T06:38:10.743 回答
2

我正在使用 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 选项以使其正常工作很重要

于 2016-08-25T14:35:32.047 回答
0

您可以使用骆驼使用 REST 服务CXFRS Component。Apache camel 对此有足够的信息。

http://camel.apache.org/cxfrs.html

于 2012-04-16T06:34:38.067 回答