1

这是我要解决的用例:

我有:

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

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

  • 一个后端模块 B,也暴露了一个 REST API。(我不能改变这个不是我的模块,它只有一个 REST API)

对于其中一项服务,C 调用 A,A 调用 B。一切都发生在 REST 中。由于 REST 调用是同步的(即阻塞),因此速度很快。

现在我想将 A 和 B 解耦,让 A 不直接了解 B。

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

C ---(REST 调用)----> A ----> Camel ---(REST 调用)---> B


我的问题

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

决胜局

与 ServiceMix 一样吗?

谢谢!

4

1 回答 1

2

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

我将对两者都进行尝试-恕我直言,基于消息的体系结构(特别是事件驱动的体系结构)很棒。在 infoq.com 上搜索事件驱动架构以获取大量信息。提供出色的解耦、可扩展性、关注点分离等。

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

不知道如何回答“它会一样吗”。ServiceMix 使用 Camel 进行路由,因此其中一些会以相同的方式工作。但是 ServiceMix 也内置了 ActiveMQ,所以如果你决定使用 ActiveMQ 以外的东西(例如 RabbitMQ),那么它的工作方式会有所不同:)

于 2012-03-14T18:12:59.593 回答