让我们假设,我有申请,使用Akka(可能与Alpakka和/或Lagom)。
我还能从像Red Hat JBoss Fuse这样的iPaaS中受益吗?
如果是,那有什么好处? 如果不是,那怎么称为演员系统的一部分,可以替代iPaaS?
答案 0 :(得分:4)
根据定义,actor系统或actor model只是并发和异步编程的计算模型。这种计算模型本身并不能解决任何实际问题,例如面向对象或函数编程则不能。如果您想应用actor系统来解决集成问题,最重要的是连接到各种系统并支持记录为Enterprise Integration Patterns(EIP)的最佳实践。
如果我的理解是正确的,Akka本身只是演员模型的一个实现,并没有提供各种各样的开箱即用的连接器。 Akka历史上依赖于Akka-Camel模块(Apache Camel是JBoss Fuse中加载的核心集成引擎),但最近用Alpakka取代了它的功能。所以你真正需要比较的是Alpakka和Apache Camel。
在连通性方面,Alpakka似乎仍处于发展阶段;此时,它只提供了大约两十个连接器
https://developer.lightbend.com/docs/alpakka/0.14/connectors.html
另一方面,Apache Camel是这方面的既定框架,已有280多个连接器(="组件")已经可用。
https://github.com/apache/camel/blob/camel-2.20.0/components/readme.adoc
在EIP支持方面,两者都应涵盖大部分模式。然而,我想在此强调的一点是,对于Alpakka而言,EIP支持似乎更为准确;它可能大部分都是直截了当的,但基本上你仍然需要找到使用Akka Streams DSL实现模式的方法,如下所示:
https://developer.lightbend.com/docs/alpakka/0.14/patterns.html
相比之下,Apache Camel提供了一个使用EIP的内置DSL,这使得模式的使用更加直观和可视化识别:
https://github.com/apache/camel/blob/camel-2.20.0/camel-core/readme-eip.adoc
https://github.com/apache/camel/blob/camel-2.20.0/camel-core/src/main/docs/eips/split-eip.adoc
提供所有信息后,您可以选择哪种技术用于集成解决方案。我确信还有其他方面需要考虑,例如对某种语言的偏好(Scala over Java)等等。由于Alpakka是一个相对较新的框架,它将会发展,并且比较可能在将来无效。 (尽管如此,Apache Camel正在积极发展。)
注意:我是Apache Camel的贡献者,因此这个答案可能偏向于Apache Camel。但我试图尽可能地将其写成事实和客观。