gpt4 book ai didi

java - 理解 Actor 创作的 Prop

转载 作者:行者123 更新时间:2023-11-30 10:42:02 24 4
gpt4 key购买 nike

我正在尝试理解如何正确使用 Props。我的第一个想法是 Props 对象包含正在创建的 Actor 的一些属性。这些属性可能包括参与者的字段值以及一些与部署相关的信息(例如要使用哪个调度程序)。后者与实际 Actor 无关,因此应该独立运送。

但是在the documentation说好的做法是像这样在 actor 中使用静态工厂方法(已删除文档):

public class DemoActor extends UntypedActor {

public static Props props(final int magicNumber) {
return Props.create(new Creator<DemoActor>() {
private static final long serialVersionUID = 1L;

@Override
public DemoActor create() throws Exception {
return new DemoActor(magicNumber);
}
});
}
}

我认为这不太好,例如我们现在想使用一个调度程序,并且需求在将来的某个时候会发生变化。这将导致修改(在我看来)不正确的 Actor 类。

最佳答案

我相信,静态工厂方法对于 Java 可能特别有用,Java 在 Akka 中往往变得非常冗长。虽然您显示的代码是针对 Actor 类的,但您通常还会有一些反转控制样式的配置 Bootstrap 类,您通常会在其中设置 actor系统,然后是具有 ActorSystem#actorOf 类的 Actor 。

现在,在从 Actor 的 props 工厂方法中检索基础 Props 实例后,您可以根据您的目的对其进行一些配置(Props 是不可变但有返回修改实例的方法)。如果您需要不同的调度程序,那么您只需修改您的 Bootstrap 类,如下所示:

ActorSystem system = ...;
system.actorOf(DemoActor.props(42), "demo-with-default-dispatcher");

到:

system.actorOf(DemoActor.props(42).withDispatcher("DemoDispatcher"), "demo-with-configured-dispatcher");

(这些只是最小的代码片段,但我想你明白了)

关于java - 理解 Actor 创作的 Prop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38292848/

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