Исходный код
Учебник Akka имеет следующий код: http://doc.akka.io/docs/akka/2.0.2/intro/getting-started-first-java.html
public void calculate (final int nrOfWorkers, final int nrOfElements, final int nrOfMessages){
ActorSystem system = ActorSystem.create("PiSystem");
final ActorRef listener = system.actorOf(Props.create(Listener.class), "listener");
ActorRef master = system.actorOf(new Props(new UntypedActorFactory() {
public UntypedActor create() {
return new Master(nrOfWorkers, nrOfMessages, nrOfElements, listener);
}
}), "master");
master.tell(new Calculate(), ActorRef.noSender());
}
в котором UntypedActorFactory
устарел.
Мой мод
Поэтому я попытался использовать Props.create
, например
ActorRef master = system.actorOf( Props.create(
new Creator<Master>(){
public Master create(){
return new Master(nrOfWorkers, nrOfMessages, nrOfElements, listener);
}
}), "master");
И есть сообщение об исключении
не может использовать нестатический локальный Творца для создания актеров; сделать его статическим или верхнего уровня
поэтому я начинаю писать статический класс, который имеет параметры, которые необходимо передать.
static class LocalCreator implements Creator<Master>{
public Master create(){
return new Master(nrOfWorkers, nrOfMessages, nrOfElements, listener);
}
}
Вопрос
Как передать параметры nrOfWorkers и т.д. в функцию create()
элегантно?