Akka Inbox实际上做了什么?

时间:2017-08-21 13:48:33

标签: akka

Akka' s Inbox.create(actorsystem)实际上做了什么?它是否会为我们在系统上创建收件箱的所有演员创建一个新邮箱? inbox.watch(actorref)做了什么?

您能解释一下inbox.sendinbox.receive实际上做了什么吗?

1 个答案:

答案 0 :(得分:3)

来自/** * An Inbox is an actor-like object which is interrogated from the outside. * It contains an actor whose reference can be passed to other actors as * usual and it can watch other actors’ lifecycle. */ 的{​​{3}}:

Inbox

myActor对象是一种与演员之外的演员进行交流的方式。假设我们想要发送消息并接收来自名为// this code is not inside an actor ActorRef myActor = ??? final Inbox inbox = Inbox.create(system); inbox.send(myActor, "ping"); 的actor的回复,我们希望从actor外部执行此操作。 (以下代码示例改编自source code。)

Inbox.create(system)

inbox.send(myActor, "ping");创建了一个系统级的actor。 "ping"myActor邮件Inbox发送给Inbox,其中myActor的内部角色作为发件人。由于inbox.receive的演员是发件人,因此try { assert inbox.receive(Duration.create(1, TimeUnit.SECONDS)).equals("pong"); } catch (java.util.concurrent.TimeoutException e) { // timeout } 可以inbox.watch收到回复:

Inbox

myActor注册inbox.watch(myActor); myActor.tell(PoisonPill.getInstance(), ActorRef.noSender()); try { assert inbox.receive(Duration.create(1, TimeUnit.SECONDS)) instanceof Terminated; } catch (java.util.concurrent.TimeoutException e) { // timeout } 的演员,以便在Inbox.create(system)被终止时通过documentation收到通知:

Inbox

//generate a health bean dynamically, and register it @PostConstruct public void init(){ solrhealth = new SolrHealthIndicator(solr); //context.?? } 为系统中的所有参与者创建新邮箱。不要让“收件箱”这个词让你感到困惑。此外,Akka默认启用DeathWatch,每个actor创建一个邮箱; sudo apt-get install qtbase5-dev对象不会改变它。