2012-03-14 170 views
1

快速后端总线这是我试图解决用例:用骆驼与REST服务

我:

  • 客户端C,这是一个Web应用程序,

  • 一个前端模块A,露出REST API,

  • 后端模块B,也暴露REST API。 (我不能改变这个模块不属于我,并且只有一个REST API)

为一体的服务,C电话有它调用B.一切都发生在REST。它的速度很快,因为REST调用是同步的(即阻塞)。

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

所以我想知道关于把骆驼的消息总线在中间。它将给:

Ç---(REST调用)---->一个---->骆驼---(REST调用)--->乙


我的问题

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

决胜局

将它的工作与ServiceMix的一样吗?

谢谢!

+0

不能你只写了出版商用户一个真正的终点,并有一个真正的出版商,以便这样你可以不断地只是从你的脱钩用户检查呢? – Kristian 2012-03-14 15:07:27

+0

@Kristian模块B不能成为订户,它是我不管理自己的模块。 – unludo 2012-03-14 15:09:56

回答

2

你问一个消息总线是否是一个很好的架构,还是你问,因为你已经选择使用一个消息总线,如果骆驼/ ServiceMix的是正确的解决方案?

我会采取两种方式 - IMHO基于消息的体系结构(特别是事件驱动体系结构)非常棒。搜索infoq.com上的事件驱动架构以获取丰富的信息。提供梦幻般的解耦,可扩展性,关注点分离等。

它会很快吗?太多的因素有回答。它肯定会比点对点休息呼叫花费更多,但可能不够重要。还取决于你选择哪种消息传递代理,如果你需要选择性队列等等等等。我使用Camel来提供这样的解决方案,它对于我所需要的'足够快'。你必须尝试一下。

不知道如何回答'它的工作原理是否相同'ServiceMix使用Camel进行路由,所以它的一些工作原理是一样的。但ServiceMix的也有内置ActiveMQ的,所以如果你决定使用其他东西的ActiveMQ(如RabbitMQ的),那么它会工作方式不同:)