0

假设我有使用 Akka(可能使用 Alpakka 和/或 Lagom)的应用程序。

我还能从像 Red Hat JBoss Fuse 这样的 iPaaS 中受益吗?

如果是,那有什么好处?如果不是,那如何称为作为 iPaaS 替代品的参与者系统的一部分?

4

1 回答 1

4

根据定义,参与者系统或参与者模型只是并发和异步编程的计算模型。这种计算模型本身并不能解决任何实际问题,就像面向对象或函数式编程一样。如果您想应用参与者系统来解决您的集成问题,最重要的是与各种系统的连接以及对记录为企业集成模式(EIP) 的最佳实践的支持。

如果我的理解是正确的,Akka 本身只是一个 Actor 模型的实现,并没有提供各种各样的开箱即用的连接器。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。但我试图尽可能真实和客观地写它。

于 2017-10-26T03:28:31.450 回答