playframework - 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 的引用?
解决方案
要获取现有演员的参考,您可以:
- 通过具体路径查找演员,请参阅https://doc.akka.io/docs/akka/2.5/general/addressing.html#looking-up-actors-by-concrete-path。
ActorRef
在actor系统中初始化后简单地传递。
在我目前正在使用的系统中,第二种方法效果很好,因为它很简单。
推荐阅读
- reactjs - 如何在下一个 js 中创建 url 别名并表达您通过 id 获取数据的帖子或用户?
- java - 我可以为多个 Web 操作只调用一次 PageFactory 实例吗?
- javascript - Sequelize 中的迁移在我自己的文件夹结构中
- android - 在 ARCore 中使用 ImageView 显示图像
- perl - 如何在 Perl 中实现断言?
- python - 如何索引,删除和计算列表中元素的所有实例?
- jquery - 如何在 onclick 事件之前触发 onchange 事件(Bootstrap 4 单选按钮)
- java - Selenium Webdriver (Java) - 如何解决动态文本和倒数计时器?
- python - 如何在我的 Tkinter GUI 应用程序中嵌入 SDL2 窗口?
- python - 整数不会附加到我的网格数组 - python