1

有人可以帮我解决这个问题。将 akka 与 Java 一起使用时,是否可以使用akka带有参数的构造函数创建子角色。因为我知道主actor负责创建子actor。因此,如果我们有一个子actor,它在其构造函数中接受参数。

这是否意味着每当调用子actor时,主actor必须创建子actor的新实例才能将参数传递给子actor。

4

3 回答 3

4

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

ActorRef myActor = system.actorOf(new Props(new UntypedActorFactory() {
  public UntypedActor create() {
    return new MyActor("...");
  }
}), "myactor");

请参阅“使用非默认构造函数创建 Actors”下的文档

于 2013-05-20T22:03:32.333 回答
3

正如罗伯特所说,一旦创建了一个演员,您只需向它发送消息。这就是你如何创建一个带参数的演员,你可以从另一个演员做:

自 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

于 2013-12-24T13:54:53.377 回答
1

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

于 2013-02-17T16:46:31.890 回答