gpt4 book ai didi

scala - Akka - 使用反射创建 Actor

转载 作者:行者123 更新时间:2023-12-01 12:58:59 26 4
gpt4 key购买 nike

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

到现在为止,我一直尝试使用反射来做到这一点,如下所示:

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

不幸的是,这会导致“akka.actor.ActorInitializationException:ActorRef for instance of actor [...] 不在范围内。您不能使用‘new MyActor’显式创建 actor 的实例。[.. .]”!

现在,我知道这可以防止框架泄漏对内部对象的引用,但是我怎样才能解决这个问题呢?或者,我还能如何以可行的方式做我想做的事情?

最佳答案

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

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

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

关于scala - Akka - 使用反射创建 Actor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7941971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com