【问题标题】:Is Integrating an ESB (ServiceMix/Mule) Worth the Learning Curve? [closed]集成 ESB(ServiceMix/Mule)值得学习曲线吗? [关闭]
【发布时间】:2010-11-24 19:42:09
【问题描述】:

我正在考虑将 ESB 集成到现有的基于 Java/Maven Web 的产品中。具体来说,我正在研究 ServiceMix 和 Mule。该产品将连接到多种不同的服务,包括电子邮件、Quartz、基于 HTTP、SMS 和 IM 的 RESTful 网络服务。我只是快速浏览了文档,这两个选项似乎相当重量级且相当复杂。这似乎是何时使用 ESB 的教科书示例,但我不想花费大量时间来学习一个或另一个系统。

就像我说的,我已经有一个由 Maven 构建的 Web 应用程序,并希望集成其中一个系统会相当简单,即使只是发送电子邮件这样简单的事情,但看起来添加任何一个都会减少一半罐子里的世界,很难嵌入到现有的产品中。

是否值得尝试使用这些选项之一?有没有一种简单的方法可以将它们集成到现有的应用程序中而无需完全重构它?还有其他更轻的选择吗?我应该考虑哪些方面值得使用它们?

【问题讨论】:

  • 除了更复杂之外,ESB 还能为您带来什么?为什么你认为你需要它?有多少服务是“多个”,您认为必须有多少服务才能使 ESB 成为必要?
  • 我预计在我们投入生产时,外部服务将达到两位数的低位。它们将是多种多样的,但其中许多将用于类似的目的。例如,通过电子邮件、IM 或 SMS 通知,唯一的区别是媒介。
  • 一年多后的后续。最后用骆驼换了骡子。我们对 Camel 非常满意。令人惊讶的充满活力的社区,轻量级,现在有一本书可以补充一般良好的文档。我会说从 Camel 开始,除非有一些明显的原因你需要一个完整的 ESB。
  • 你可以在 servicemix 中使用骆驼,因此,当你以后需要单独使用骆驼无法实现的东西时,你可以使用其他 servicemix 功能。

标签: java mule esb apache-servicemix


【解决方案1】:

我想说,如果您有两个以上的应用程序或数据库需要相互通信,并且它们使用的通信协议不止一种,那么投资是值得的。或者,如果您预计这种情况在未来会发生。听起来您的要求肯定符合这个要求。

另一种建议使用 ESB 或至少使用消息总线的情况是您期望或需要一个或多个应用程序独立于其他应用程序发展的地方。例如,一个正在积极开发中,而另一个则没有。 ESB 可以将稳定的系统与积极开发的系统中的变化隔离开来,从而无需始终更新所有内容。

ESB 的真正强大之处在于,应用程序可以将有关如何通信以及与谁通信的所有决策委托给 ESB,并让该组件对这些方面承担全部责任。所有其他组件相互隔离,无需相互担心,大大减少了依赖组合的问题。

就学习曲线而言,我发现 Mule ESB 非常容易上手,而且学习曲线肯定要低得多,尝试学习所有必需的 API 来处理您尝试的多种服务连接到。

【讨论】:

    【解决方案2】:

    我建议不要在 MULE 上浪费您的宝贵时间。到目前为止,我的经验并不好。 我不会将它用于任何关键系统。离成熟的产品还很远。 除此之外,RESTful 服务肯定会提供很多简单性并具有实际用例。

    【讨论】:

      【解决方案3】:

      您可能还想看看 Apache Camel 框架,该框架非常强大,可以满足您提到的所有集成需求,而不会受到完全成熟的 ESB 的影响。

      【讨论】:

      • 有趣的是,你应该提一下,因为我现在正在评估 Camel 作为一个潜在的选择,而不是 Mule,因为它似乎更轻量级。我还没有做出任何决定,但它似乎可以在没有太多开销的情况下为我提供所需的东西。
      【解决方案4】:

      Mule 项目的创始人 Ross Mason 就这个话题写了一篇非常好的文章,To ESB or Not to ESB。我建议看一看。此外,如果您将其构建为 Web 应用程序并且只想进行一些轻量级集成并且对中介不感兴趣,您可能需要查看 Mule iBeans,它提供了一个更简单的模型。

      【解决方案5】:

      Mule 在将服务与 XML 一起插入方面使用起来非常简单,并且他们有大量的视频示例,我发现这些示例非常有用。

      ESB 应该是未来的,正如你所说 - 你的似乎是一个教科书示例,说明在哪里使用它。

      我会尽力回答你所有的问题:

      是否值得尝试使用这些选项之一? 我认为这是您需要问自己的一个问题-您要实现什么目标?如果您试图使其更容易实现,那么通过纯代码或 ESB 可能需要相同的时间,包括所有设置。如果您打算将其作为一种学习练习,那么它可能是值得的。

      有没有一种简单的方法可以将它们集成到现有的应用程序中而无需完全重组? 简短的回答没有。您将需要进行一些重新设计以与大多数第三方库/框架集成。

      还有其他更轻的选择吗? 骡子真的很简单。您也许可以使用 MQ 来执行 HTTP、SMS 和 IM。可能是 ActiveMQ 或 RabbitMQ。

      我应该考虑哪些方面值得使用它们? 是的,ESB 是为经常添加新服务并且配置可能会更改的企业而设计的。将这一切都放在 XML 中会使这种更改更容易一些。因此,如果您只是构建一个一次性的软件,它可能不是正确的方法。但是,如果您以后要添加更多并不断连接不同的服务,那可能是最好的路线。

      【讨论】:

      • 我能够让 Mule 使用该项目而没有 太多麻烦,尽管它似乎确实可以拉入大多数可以想象的罐子。当我最终获得正确的咒语时,对我的代码的影响非常小,这很好,但是文档对于将 Mule 集成到现有的 web 应用程序中并不是很好。我仍然不知道这是否值得,但我现在有办法确定这一点。谢谢。
      猜你喜欢
      • 2011-01-22
      • 1970-01-01
      • 2011-04-06
      • 2010-11-07
      • 2014-04-01
      • 2016-01-19
      • 2011-10-01
      • 2011-12-27
      • 1970-01-01
      相关资源
      最近更新 更多