首页 > 解决方案 > Akka 并获取单例对象的 ActorRef

问题描述

为 Singleton Actor 获取 ActorRef 的(最佳)方法是什么

这是我使用的代码:

   ActorRef instance = system.actorOf(Props.create(ContactServer.class, encoding, this));
    instance.tell(new AbstractMap.SimpleImmutableEntry<>(device, actionJson), ActorRef.noSender());

我遇到的问题是 Actor 永远不会关闭,所以我最终得到了很多演员:

akka://application/user/$e
akka://application/user/$f
akka://application/user/$g
akka://application/user/$h
akka://application/user/$i

然而,虽然我可以使用“getContext().stop(getSelf())”关闭 Actor,但将其用作 Singleton 似乎更有意义,因为 Actor 中没有保存任何状态。但是,如何在不一直创建新 Actor 的情况下获得对这个 Actor 的引用?

标签: playframeworkakka

解决方案


要获取现有演员的参考,您可以:

  1. 通过具体路径查找演员,请参阅https://doc.akka.io/docs/akka/2.5/general/addressing.html#looking-up-actors-by-concrete-path
  2. ActorRef在actor系统中初始化后简单地传递。

在我目前正在使用的系统中,第二种方法效果很好,因为它很简单。


推荐阅读