【问题标题】:Using Camel as a Fast Back-end Bus with REST services使用 Camel 作为带有 REST 服务的快速后端总线
【发布时间】:2012-03-14 15:03:36
【问题描述】:

这是我要解决的用例:

我有:

  • 一个客户端 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 的工作方式相同吗?

谢谢!

【问题讨论】:

  • 难道您不能为发布者订阅者编写一个真正的端点并拥有一个真正的发布者,这样您就可以不断地从分离的订阅者中检查它吗?
  • @Kristian 模块 B 不能成为订阅者,这是一个我自己无法管理的模块。

标签: java rest apache-camel apache-servicemix


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    相关资源
    最近更新 更多