使用Camel作为具有REST服务的快速后端总线

时间:2012-03-14 15:03:36

标签: java rest apache-camel apache-servicemix

这是我试图解决的用例:

我有:

  • 客户端C,是一个网络应用,

  • 前端模块A,公开REST API,

  • 后端模块B,同时公开REST API。 (我无法更改此模块,这不是我的,只有REST API)

对于其中一个服务,C调用A调用B.一切都发生在REST中。它很快,因为REST调用是同步的(即阻塞)。

现在我想要解耦A和B,因为A直接不知道B.

所以我想知道将Camel作为消息总线放在中间。它会给:

C ---(REST调用)----> A ---->骆驼---(REST电话)--->乙


我的问题

这是一个好主意,如果是,它仍然会很快(A和B之间没有任何东西,我在本地网络上的响应时间不到10毫秒)?

决胜局

ServiceMix的工作方式是否相同?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果Camel / ServiceMix是正确的解决方案,您是在询问消息总线是否是一个好的架构,或者您是否在询问是否已选择使用消息总线?

我会抨击两者 - 恕我直言的基于消息的体系结构(特别是事件驱动的体系结构)非常棒。在infoq.com上搜索Event Driven Architectures以获取丰富的信息。提供出色的解耦,可扩展性,关注点分离等。

会快吗?有太多因素可以回答。它肯定会比点对点休息呼叫更多开销,但可能还不够重要。还取决于您选择的消息代理,是否需要选择性队列等等。我使用Camel来获得这样的解决方案,并且它“足够快”以满足我的需求。你必须尝试一下。

不确定如何回答'它的工作方式是否相同'.ServiceMix使用Camel进行路由,因此其中一些工作方式相同。但是ServiceMix也内置了ActiveMQ,所以如果你决定使用其他的ActiveMQ(例如RabbitMQ)那么它将以不同的方式工作:)