我在CXF框架上构建了一个安静的Web服务。要求是当有人点击这个服务器时,我必须根据收到的参数从google,bing等内容提供商处获取一些数据,并且必须将其返回给客户端。现在调用服务提供者并获得其结果将使用Camel Framework完成。 我已经确定使用简单路由(“direct:start”).to(“http://google.com).bean(ffoo | bar)可以让我与服务提供商交谈,并根据结果做我想做的事情但问题是应该在“direct:start”的位置,以便这条路线从我的服务方法开始,这是由客户端命中。我读了一些关于POJO生产但我无法理解它是如何工作的以及它是否能解决我的问题。
我也有一个查询..在这个语法中... from()。to()... to是consmer,from是生产者,反之亦然?因为在我的日志中它表示路线正在直接消耗:开始...... 更喜欢弹簧配置类型的答案
由于
答案 0 :(得分:1)
是的,Camel可以公开REST服务并将这些请求路由到下游。
您可以使用一些选项。听起来第一个选择将是最不痛苦的:
编辑 - 回复评论
上述所有组件都可以在服务器端使用,以将服务器公开为基于REST的Web服务。在Camel-speak中,这意味着这意味着您将该组件用作使用者,因为它会消耗来自外部的消息。
有关生产者与消费者的更多信息,我将无法更好地解释它而不是the author himself。
答案 1 :(得分:0)
最初我为我的webservice实现了cxfrs组件(受Roy Truelove的回答启发),但这导致了其他complications。所以现在使用direct:start组件来启动路由..我的配置看起来像这样:
<camel:route>
<camel:from uri="direct:start" />
<camel:process ref="customInProcessor" />
<camel:to uri="http://localhost:8080/DummyGoogleProject/search" />
<camel:to uri="bean:googleResponseHandler" />
</camel:route>
</camel:camelContext>
customInProcessor做一些处理,比如修改CamelHttpUri,Path,Query等(没有这个,有一些problems in route execution) 我通过我的POJO中的ProducerTemplate在“direct:start”端点注入交换(POJO producing)