actor/agent 系统是否使 iPaaS 变得多余?

Does actor/agent system make iPaaS redundant?

假设我有应用程序,它使用 Akka(可能与 Alpakka and/or Lagom)。

我还能像 Red Hat JBoss Fuse 那样受益于 iPaaS 吗?

如果是,那有什么好处? 如果不是,那如何称为 actor 系统的一部分来替代 iPaaS?

根据定义,actor 系统或 actor model is just a computational model for concurrent and asynchronous programming. This computational model per se does not solve any real problems, like object-orientation or functional programming does not. If you want to apply the actor system to solve your integration problems, what matters most would be connectivity to a variety of systems and support for the best practice documented as the Enterprise Integration Patterns (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+ 个连接器(="components")可用。
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 优于 Java)等等。由于 Alpakka 是一个相对较新的框架,它会不断发展,未来的比较可能无效。 (不过,Apache Camel 同时也在积极发展。)

注意:我是 Apache Camel 的贡献者,所以这个答案可能偏向 Apache Camel。但我尽量写得真实objective。