【问题标题】:Apache Camel : Need advice for RoutingApache Camel:需要有关路由的建议
【发布时间】:2012-04-18 14:34:35
【问题描述】:

我在 CXF 框架上构建了一个安静的 web 服务。要求是,当有人访问此服务器时,我必须根据收到的参数从内容提供商(如 google、bing 等)获取一些数据,并且必须将这些数据返回给客户端。现在调用服务提供者并获得其结果将使用 Camel 框架完成。 我已经确定使用简单的路由 from("direct:start").to("http://google.com).bean(ffoo|bar) 可以让我与服务提供商交谈并对结果做任何我想做的事情.但问题是应该用什么代替“direct:start”,以便这条路线从我的服务方法开始,该方法被客户端击中。我读了一些关于POJO生产的信息,但我不明白它是如何工作的以及它是否能解决我的问题。

我还有一个查询..在这种语法中.. from().to() ... to 是消费者,而 from 是生产者,反之亦然??因为在我的日志中它说路线正在消耗直接:开始... 更喜欢弹簧配置类型的答案

谢谢

【问题讨论】:

  • 为了确保我理解 - 您使用的是 CXF without camel,当有人访问服务器时,您的 CXF 代码会创建一个生产者并向 'direct:开始'?
  • 是的 cxf 独立于骆驼。现在当有人访问我的服务器时,我需要使用骆驼连接到谷歌。是否有一些骆驼组件可以直接以 from 语法使用我的服务器。我的意思是,而不是 (direct:start) 它可能是一些 (server:foobar)。

标签: java rest cxf apache-camel


【解决方案1】:

是的,Camel 可以公开 REST 服务并将这些请求路由到下游。

您可以使用几个选项。听起来第一个选项最不痛苦:

EDIT - 回复 cmets

以上所有组件都可以在服务器端使用,以将服务器公开为基于 REST 的 Web 服务。用骆驼的话说,这意味着您将组件用作消费者,因为它从外部消费消息。

有关生产者与消费者的更多信息,我无法比the author himself 更好地解释它。

【讨论】:

  • 还请澄清这一点:在这种语法中.. from().to() ... to 是消费者,from 是生产者,反之亦然??因为在我的日志中它说路线正在消耗直接:开始
  • CXFRS 组件,你的意思是我应该使用这个来公开我的休息网络服务吗?还是我应该只使用它的客户端?我有点困惑。
  • 稍微修改了一下消息,希望对您有所帮助!
【解决方案2】:

最初我为我的 web 服务实现了 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 (POJO producing) 中的 ProducerTemplate 在“direct:start”端点中注入交换

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-29
    • 2019-05-06
    • 2016-08-24
    • 1970-01-01
    • 2022-11-28
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多