Akka -使用反射创建演员



我需要创建一个角色,其确切类型仅在运行时从配置文件中读取。该actor的构造函数是非平凡的,也就是说,它需要一些在配置文件中定义的参数。

到目前为止,我一直尝试使用反射来完成此操作,如下所示:

val actor = actorOf(constructor.newInstance(parameters: _*).asInstanceOf[T]).start

不幸的是,这会导致一个"akka.actor"。ActorInitializationException: ActorRef for instance of actor[…]不在范围之内。你不能使用new MyActor显式地创建一个actor实例。[…]"!

现在,我知道这可以保护框架不泄漏对内部对象的引用,但是我如何解决这个问题呢?或者,我还能怎么做我想做的事情呢?

可以使用Java接口来创建带有参数的actor。创建的(Java)代码如下所示:

ActorRef actor = actorOf(new UntypedActorFactory() {
  public UntypedActor create() {
    return new MyUntypedActor("service:name", 5);
   }
});
所以你传递一个工厂而不是一个函数。

相关内容

  • 没有找到相关文章

最新更新