我是Akka的新手,我正在尝试创建一个Actor并从其他各种演员那里向该演员发送消息。接收者称为英雄,发送者是信使
这是我的英雄课
np.busday_count(start_date.date(), end_date.date())
>>> 521
np.busday_count(start_date.date(), end_date.date(), holidays = holiday_date_list)
>>> 501
我使用以下代码启动Hero
import akka.actor.UntypedActor;
public class Hero extends UntypedActor {
@Override
public void onReceive(Object arg0) throws Exception {
System.out.println("Received = " + arg0);
}
}
当我运行上面的代码时,我收到消息“Received =我在这里”。
现在我的Messenger类的构造函数如下
import akka.actor.ActorRef;
import akka.actor.ActorSystem;
import akka.actor.Props;
public class TestHero {
public static void main(String[] args) {
ActorSystem system = ActorSystem.create("testHero");
ActorRef master = system.actorOf(Props.create(Hero.class), "master");
master.tell("I am here", ActorRef.noSender());
}
}
当我打印英雄对象时,它总是为空。我在这里错过了什么?这是搜索Actor的正确方法吗?重点是这两个演员将在两个不同的JVM中运行。
我启用了远程处理并修改了Messenger类,如下所示。
private static ActorRef hero;
public Messenger() {
ActorSelection master = context().actorSelection("akka://localhost/user/serviceA/master");
hero = master.anchor();
}
输出如下
class akka.actor.RepointableActorRef>>演员[阿卡://测试/用户/ msgnr#-975452280]
空
ActorSelection [Anchor(akka:// test / deadLetters),Path(/ user / master)]
msg =你好
如何等待创建Messenger以便英雄演员参考被实例化?
答案 0 :(得分:0)
我通过向Messenger添加application.conf文件解决了这个问题。