【问题标题】:Akka - Creating an actor using reflectionAkka - 使用反射创建一个演员
【发布时间】:2011-10-29 21:59:35
【问题描述】:

我需要创建一个仅在运行时从配置文件中读取其确切类型的actor。该actor的构造函数很重要,即它需要一些在配置文件中定义的参数。

到目前为止,我已经尝试使用反射来做到这一点,如下所示:

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

不幸的是,这会导致“akka.actor.ActorInitializationException: ActorRef for instance of actor [...] is not in scope。你不能使用'new MyActor'显式创建一个actor实例。[.. .]"!

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

【问题讨论】:

    标签: scala reflection constructor akka actor


    【解决方案1】:

    也许使用 Java 接口来创建带有参数的演员。创建的 (Java) 代码如下所示:

    ActorRef actor = actorOf(new UntypedActorFactory() {
      public UntypedActor create() {
        return new MyUntypedActor("service:name", 5);
       }
    });
    

    所以你传递一个 factory 而不是一个函数。这可能会更好......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      • 2018-12-11
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 2018-01-13
      • 2013-05-14
      相关资源
      最近更新 更多