Akka:使用路径找到actor ref

时间:2015-05-15 17:45:03

标签: java akka

我是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以便英雄演员参考被实例化?

1 个答案:

答案 0 :(得分:0)

我通过向Messenger添加application.conf文件解决了这个问题。