大多数初学者的Akka示例似乎都主张像这样调用角色系统的stop()和shutdown()方法:
object Main extends App {
// create the ActorSystem
val system = ActorSystem("HelloSystem")
// put your actors to work here ...
// shut down the ActorSystem when the work is finished
system.stop
system.shutdown
}然而,如果你的Akka应用程序是一个正在运行的服务,那么它应该(可以想象)永远存在吗?这意味着它开始了,参与者系统被创建,并且参与者只是空闲直到工作(可能来自连接的客户端,等等)。需要做什么?
是否可以只初始化/启动参与者系统并保留它(也就是说,完全省略调用stop和shutdown?为什么/为什么不?
发布于 2017-08-04 05:37:42
是的,没问题。这是一个类似于AkkaHTTP实现的问题。在AkkaHTTP中,您可以启动actors,这些actors打开一个套接字并等待请求。
我想到了一个可能的问题:如果您需要一些生命周期较短的参与者(在长时间运行的服务中)来处理单个请求,那么您应该在不再需要它们(以释放资源)之后停止它们,特别是如果这些参与者是有状态的。
我写了一篇关于这个问题的博客文章:https://mikulskibartosz.name/always-stop-unused-akka-actors-a2ceeb1ed41
https://stackoverflow.com/questions/45493306
复制相似问题