Apache Camel和其他ESB产品

83

嘿,
如果我们拥有Apache Camel,为什么需要使用其他解决方案,例如Apache ServiceMix和Mule?
与这些产品相比,Apache Camel有什么做不到的吗?
何时使用Mule / ServiceMix,何时使用Camel?

7个回答

78

现在是2016年,自问题最初提出以来发生了很多变化,因此我想针对新观众重新访问它。

从战略上说

  • Apache Camel 一直保持其根源不变,没有演变成一个重量级或完全成熟的运行时平台。它是多功能和模块化的,可以运行:

    1. 嵌入式在任何类型的Java容器中(servlet容器,应用服务器,Spring Boot)。
    2. 作为Java进程独立运行。
    3. 在OSGi环境内Apache Karaf)。
  • Apache Camel继续发展并每月获得越来越多的关注和活动,如下面这个图表所示,我从OpenHub中提取出来。用户群也在不断增加。

Apache Camel Contributors per Month

  • 2012年,红帽公司收购了FuseSource,这是Apache Camel、ActiveMQ、ServiceMix和CXF的主要推动者和开发者之一。现在,几位提交者和PMC成员受雇于红帽公司来开发Apache Camel。

  • Mule ESB提供两个版本的产品Community(在CPAL许可下免费)和Enterprise(付费)。他们将Community版本定义为:

适用于评估或预生产使用。

=> 这意味着您应该购买付费的Enterprise订阅以进行生产使用。

In fact, Mule ESB Community Edition是根据CPAL许可证分发的。这意味着,如果您仍然决定使用此版本,则Mule要求
  • 每次启动或初始运行可执行文件和源代码或更大的作品时,必须在最终用户用于访问此类Covered Code的图形用户界面上突出显示Mulesoft的归属信息(可能包括在闪屏上显示)。 => 基本上,您需要广告您使用Mule构建的任何内容正在运行Mule。

  • 如果通过网络访问Mule ESB部署(因为它是一个集成平台!),您还必须向访问它的人提供您的部署源代码。

正如其他人在上面提到的那样,Apache Camel是一个完全开放的项目,由社区驱动,面向社区。所有源代码都是公开可用的,并且鼓励每个人发送拉取请求,在论坛中贡献组件并提供帮助或咨询。相反,Mule社区是一个封闭的社区。 最后但同样重要的是,以下是Google Trends对Mule ESB与Apache Camel的趋势分析。请注意,我使用了新的语义主题测量以获得更高的准确性,而不是标准的查询关键字。这样我们就不会测量动物(骡子与骆驼)的受欢迎程度,而是软件!解释:Mule从2007年到2011年大幅下降,而Apache Camel则呈上升趋势。自2011年以来,Mule已经停滞不前,而Apache Camel仍在健康地增长!

Mule vs Camel in Google Trends

Apache Camel 技术的演进

我想给您一些有关 Apache Camel 的功能度量指标,自 2010 年 9 月 25 日您最初提出问题以来,Apache Camel 已经发生了很大的演变. 这是当时的源代码

Back then, Camel had 88 components. Now it has 220 components, including integrations with Facebook, Twitter, Salesforce, Apache Ignite, Apache Cassandra, AWS, Apache Kafka, MongoDB, Apache Spark, etc.
There have been many technical improvements, such as the Async Routing Engine, Message History, Circuit Breaker EIP, and many enhancements to EIPs like Aggregation, Splitting, Dynamic Routing, etc.
The ecosystem has grown to include Hawtio for monitoring and management, fabric8 for deployment, etc.
Since then, more than 5500 tickets have been resolved, including new features, improvements, and bug fixes.
And much, much more!

最后的说明

这两个产品在过去的5.25年里都有很大的发展!然而,由于许可证的差异和Mule ESB和Apache Camel的社区性质,我认为它们已经不能再相互比较了。

Apache Camel完全开源 ❤️,而Mule ESB Community要求用户归属于Mulesoft并发布使用Mule的软件的源代码。Apache软件许可证是一个商业友好的许可证:您可以自由地使用Camel而不需要归属或任何其他要求。真正的免费如啤酒

希望这些年的反思能够帮助新的观众! :)


免责声明:我是Apache Camel项目的提交者和PMC成员。

3
我已经发布了一篇博客文章,其中包含我对Raul出色回答的补充评论,并提供了一些在我的观点下区分Camel和Mule的关键因素- http://www.davsclaus.com/2016/01/apache-camel-and-other-esb-products.html - Claus Ibsen
2
感谢Raul的更新。我先阅读了Claus的博客并发表了评论,现在想在这里向你提出一个问题:你不认为将Apache Camel的商业实现与像Talend、JBossFuse或类似的运行时以及Mule的Anypoint进行比较会更好吗?否则,就像提到的那样,Camel是开源的,而Mule则涉及到金钱,因此产品的演进方式也有所不同。 - Souciance Eqdam Rashti
1
事实是我正在比较项目,而不是产品。问题在于Mule既是项目又是产品,所以它们是不可能分开的。实际上,公平的做法应该是比较Mule和(Apache Camel + JBoss Fuse + Talend ESB),这将为Camel生态系统带来更高的指标!但是我不想推动分析那么远,因为根据我的数据,大部分Camel用户都是普通的Apache Camel用户。希望这有意义。 - raulk
没错,但我的意思是,大多数使用Mule的企业都使用企业版,它带有运行时、开发和监控环境等。基本上是一个完整的包,因此可能更合理地将JBoss或Talend与Mule进行功能对比。开放性和社区贡献很重要,但当选择集成层时并非决定性因素。 - Souciance Eqdam Rashti

74

Apache Camel是一个实现企业集成模式(EIP)的库。虽然它可以使用Spring作为它的IOC框架,但它甚至不依赖于Spring,因此它完全与平台无关。它只是一个库。因此您可以在任何JVM环境下运行它,例如简单的jvm、servlet、ejb、osgi等。它不带来容器(如Mule)的任何好处(或开销)。在这个领域,我认为它的关注点分离更加清晰。

Mule也可以嵌入到不同的环境中,但我认为Mule将他们的EIP库与他们的容器耦合起来既有优点也有缺点。当您将Mule部署在servlet或ejb环境中时,您真的想携带Mule容器的所有负担吗?我不是Mule专家,我认为你可以花费相对较少的精力并清除一些多余的功能。(请注意,在某些情况下,这不是坏功能,如果您在另一个容器中嵌入,则是多余的。)

Apache ServiceMix是一个使用Camel实现EIP作为ESB基础的OSGI容器。虽然ServiceMix历史上始于JBI,但它已经远离JBI,并演变成(我认为)一个漂亮的分层架构,结合了最好的Apache CXF、Camel和ActiveMQ在一个OSGI容器中。这里的主要价值并不是ServiceMix及其JBI支持,而是底层的OSGI容器标准与经过验证的Apache传输,如CXF用于Web服务和ActiveMQ用于JMS。OSGI是一种成熟的标准,提供了一个容器,解决了在.NET出现之前困扰Microsoft的“DLL地狱”等同类型的问题。虽然.NET和OSGI都没有解决基本问题的本质复杂性,但它们至少提供了一种地址该问题的手段。OSGI还有其他好处,但从产品选择的角度来看,基于标准的容器是主要的,其必要特征Mule(和Java一般)未能解决的是依赖关系管理。

比较 Mule 和 Apache 社区需要注意的一些重要事项。Mule 就像 Redhat 一样,虽然它是开源许可证,但在我看来它并不是一个真正的开放社区。任何人都可以参与 Apache,而 MuleSoft 拥有 Mule 社区和最终路线图。其次,虽然 Mule 社区可以说相当活跃,但我认为 Apache 社区更大(自然如此,因为它不是一个封闭的社区)。这两种方法都有其优缺点。Apache 方法的一个积极之处在于,基于 Camel、CXF、ActiveMQ 和 OSGI 的 ESB 有多个供应商。例如,Talend 提供了一个基于相同核心技术的 ESB,没有 ServiceMix JBI 历史。这在 Apache 社区内部有利有弊,但真正的重点是突出 Apache 和 Mule 之间的差异。你在 Mule 社区中找不到多个供应商。因此,在我看来,Apache ESB(如 Talend 或 ServiceMix)是一个更广泛、更具包容性、最终更具竞争力的社区,而不是像 Mule 这样的封闭社区。

Ed Ost


8

5

Camel是一个中介引擎,而Mule则是一个轻量级的集成平台。二者的区别在于Mule提供了ESB的所有功能,包括用于部署应用程序的容器、REST和Web服务。Mule可以像Camel一样被嵌入,允许应用程序开发人员将应用程序代码与其集成代码嵌入在一起。两者都与Spring紧密集成。

Mule出于良好的原因不使用JBI现在JBI规范已经解散(没有工作组,最初通过JBI规范的Oracle也放弃了),因此没有任何良好的专业或技术理由使用JBI。


2
Camel与Spring很好地配合,但并没有与Spring紧密集成。 - Devs love ZenUML
4
骆驼(Camel)从未使用也不使用JBI。 - raulk

4

0

Claus,Camel FAQ中有一些错误,毫不奇怪,这些错误都不利于我们 :)

  • Mule中的UMO模型已经不再存在。我们从Mule 2开始逐步远离该模型,并在Mule 3中完全改变了它。现在我们有一个非常简单的消息处理器模型,使您关于它的陈述变得多余。
  • Mule已经有明确的类型转换功能几年了,这对于Camel来说并不是一个区别点。
  • Mule的许可证是OSI批准的CPAL 1.0许可证。这是一个开源许可证,而不是商业许可证。请尽快更新此信息。

我更新了常见问题解答,说明它基于Mule 1.x/2.x。那时候是James撰写该FAQ条目的时间。 - Claus Ibsen

0

首先,您需要了解Service Mix就像是一个容器,可以运行Apache Camel代码,而Mule ESB则是一个单独的产品。

在ESB产品之间有很多不同点。

在寻找差异之前,您应该了解一些事项。它们包括:

  1. 产品的开发方式
  2. 其许可证
  3. 支持功能
  4. 是否为开源
  5. 如果是开源的,是否可以修改和使用源代码等。

以上是您在做选择之前需要考虑的最佳因素。这对于大多数产品选择都是通用的,在这里也需要特别注意。

次要的产品差异将与工具及其领域有关。这可能是您要寻找的答案。以下是您需要检查的列表:

  1. 社区支持
  2. 产品堆栈
  3. 以修改自己的代码形式进行扩展性
  4. 易学性和可用性
  5. 作为企业购买时的产品支持

这可能是一项需要您自己进行研究的调查,以选择不同之处。无论如何,有许多增值功能可使该产品适合您的组织,而不是说最好的市场。

当涉及到Apache Camel或其他ESB时,将产生影响的区别有:

  1. 传输的数量
  2. Apache Camel为您提供了多样的DSL。与Mule和其他ESB不同,它们没有多个DSL。
  3. Mule在其产品堆栈中包含API管理和内部云连接器,而Apache Camel是一个框架。当考虑到FUSE ESB时,JBoss Stack提供了相当数量的其他产品,可能会补充您的选择。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接