从Apache Camel

时间:2015-09-28 07:26:56

标签: spring web-services rest apache-camel

我是Apache Camel的新手,非常感谢有人能提供我可以用来解决特定任务的骆驼组件。 我有一个简单的REST WS。受众无法访问此服务。 我们的想法是在用户请求和端点服务之间​​构建中间层。 因此,我将不得不捕获用户的请求,对其进行一些操作,发送到受限制的WS并给用户做出响应。 我刚刚开始学习apache camel,问题是实现这个逻辑的最佳方法是什么。 Thx提前!

2 个答案:

答案 0 :(得分:0)

坦率地说,Camel不是实现Web控制器的正确框架。当然有Camel Rest Module,但它正在将框架的职责范围扩大到太远。

我建议使用更适应的框架来实现WS,例如: Spring Jersey ,并以编程方式从请求处理程序中调用Camel端点。在Spring中,触发Camel端点非常简单,因为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>

答案 1 :(得分:0)

你可以使用几个camel组件来完成这项任务。将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>