【问题标题】:Start with Apache Camel从 Apache Camel 开始
【发布时间】:2015-09-28 07:26:56
【问题描述】:

我是 Apache Camel 的新手,如果有人能提供我可以使用哪些骆驼组件来解决特定任务,我将不胜感激。 我有一个简单的 REST WS。观众无法使用此服务。 这个想法是在用户请求和端点服务之间​​建立中间层。 所以我必须捕捉用户的请求,对其进行一些操作,发送到受限的 WS 并给用户一个响应。 我刚开始学习 apache camel,问题是实现这个逻辑的最佳方法是什么。 提前谢谢!

【问题讨论】:

    标签: spring web-services rest apache-camel


    【解决方案1】:

    坦率地说,Camel 不是实现 Web 控制器的正确框架。当然有Camel Rest Module,但它把框架的职责延伸得太远了。

    我建议使用更适应的框架来实现 WS,例如SpringJersey,并从请求处理程序以编程方式调用 Camel 端点。在 Spring 中,触发 Camel Endpoints 很容易,因为 CamelContext 可以自动装配到您的 Web 控制器中:

    camelContext.createProducerTemplate().sendBodyAndHeader("direct:myEndpoint", null, "id", id);
    

    对于您的 Camel Root,这种方法意味着,它以 Direct endpoint 开始,然后转发到 Camel http 端点,如有必要,将 HTTP 调用的输出转发到某个 Spring bean 转换步骤,最后传递它回到 web 控制器处理方法:

        <route>
            <from uri="direct:myEndpoint"/>
            <to uri="http:somehost.com"/>
            <transform>
                <method ref="springBean" method="doSomeTransformation"/>
            </transform>
        </route>
    

    【讨论】:

      【解决方案2】:

      你可以使用几个骆驼组件来完成这项任务。将 Camel 视为一个工具箱,您可以在其中为同一任务选择多种工具。

      你可以使用:

      使用 java dsl 的示例:

      from("jetty://http://localhost:7070/test").to("jetty://http://localhost:7070/test1");
      

      使用蓝图的示例

      <route>
          <from uri="jetty://http://localhost:7070/test"/>
          <to uri="jetty://http://localhost:7070/test1"/>
      <route>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-12
        • 1970-01-01
        • 2017-01-24
        • 2018-06-15
        • 2015-05-29
        • 2012-12-21
        相关资源
        最近更新 更多