没有Akka如何实现简单的演员?对于许多(非固定计数)actor实例,绿线程,IoC(生命周期,基于Props的工厂,ActorRef),监督,背压等,我不需要高性能.只需要顺序性(队列)+处理程序+状态+消息传递.
作为副作用,我实际上需要基于小型演员的管道(带递归链接)+一些并行演员来优化DSP算法计算.它将在没有传递依赖的库内部,所以我不希望(并且不能因为它是一个jar-plugin)推动用户创建和传递akkaSystem,库应该具有尽可能简单和轻量级的接口.我不需要IoC,因为它只是一个库(一组函数),而不是一个框架 - 因此它比结构更具算法复杂性.但是,我认为actor是描述协议的好工具,我实际上可以将算法分解为少量的异步交互实体,因此它符合我的需要.
为什么不Akka
Akka很重,这意味着:
jstack/ jconsole/ 调试akka的绿色线程也可能更难jvisualvm,因为一个actor可能会在任何线程上执行操作.当然,Akka的jar(1.9Mb)和内存消耗(每GB 250万个演员)根本不重,所以你甚至可以在Android上运行它.但是也知道你应该使用专门的工具来观察和分析演员(比如Typesafe Activator/Console),用户可能不熟悉(我不会让他们学习它).对企业项目来说一切都很好,因为它几乎总是有IoC,一些专门的工具和连续的迁移,但对于一个简单的库来说这不是一个好方法.
PS关于依赖项.我没有它们,我不想添加任何(我甚至避免使用scalaz,这实际上适合这里一点),因为它会导致大量维护 - 我将不得不保留我的简单库与Akka保持同步.