【问题标题】: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,例如Spring 或 Jersey,并从请求处理程序以编程方式调用 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>