我想表达如何正确使用Props
。我的第一个想法是Props
对象包含正在创建的actor的一些属性。这些属性可能包括参与者的字段值以及一些与部署相关的信息(例如,要使用调度器的e.e.g)。后者与实际的演员无关,因此应该独立运送。理解道具为演员创作
但the documentation说好的做法是演员中使用静态工厂方法是这样的(文件删除):
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类(在我看来)是不正确的。
另外,一个小的,完全主观的建议:如果你刚刚开始使用Akka,从未做过Scala并决定使用Java,这样你就不必学习新的语言和新的框架。那么这就是我开始的,现在很遗憾。虽然这完全合乎逻辑,但似乎有更多资源(官方文档除外)针对Scala。在没有Scala案例类的情况下制作不可变的消息类很快就会变成Java中的* pain *等等。如果有疑问,请尝试将Scala仅限于actor和消息类,并在Java中执行其他所有操作。只是我的观点。 –