使用非默认构造函数创建akka子actor

时间:2012-08-03 05:58:47

标签: java akka

有人可以帮我解决这个问题。 在Java中使用akka时,是否可以使用带参数的构造函数创建akka子操作符。因为我知道主演员负责创建childactors。所以如果我们有一个子actor在其构造函数中获取参数。

这是否意味着无论何时调用子actor,主actor都必须创建子actor的新实例,以便将参数传递给子actor。

3 个答案:

答案 0 :(得分:4)

另一种方法是使用UntypedActorFactory(至少在akka 2.1.2中):

ActorRef myActor = system.actorOf(new Props(new UntypedActorFactory() {
  public UntypedActor create() {
    return new MyActor("...");
  }
}), "myactor");
“使用非默认构造函数创建Actor”

see the docs here

答案 1 :(得分:3)

正如罗伯特所说,一旦创建了演员,你只需向其发送消息即可。这是你可以用参数创建一个actor的方法,你可以从另一个actor那里创建:

由于Akka 2.2 UntypedActorFactory已经被删除。

相反,我认为最简单的方法是这样做:

ActorRef myActor = system.actorOf(Props.create(MyActor.class, params), "MyActor");

或者你可以像这样实现Creator:

static class MyActorC implements Creator<MyActor> {
  @Override public MyActor create() {
    return new MyActor("...");
  }
}

有关详细信息,请参阅此处:

  

http://doc.akka.io/docs/akka/2.2.3/java/untyped-actors.html#untyped-actors-java

答案 2 :(得分:1)

不一定。创建actor后,用户将能够直接向该actor发送消息。如果你有一个系统,必须创建一个新的actor来完成每条消息的工作,你最好让主管为你创建actor,然后让actor通过tell()机制发回数据。