我正在使用Akka和Play2开发我的应用程序。
当我第一次使用~run
运行play2应用程序并进行GET时,我在Controller中创建了自定义Actor系统,并在2558端口启动了一个集群。
如果更改我的代码中的任何内容并进行另一个GET播放重新编译并重新开始,因为它假设但是2558端口被占用并且我有错误:Failed to bind to /127.0.0.1:2558
。
我不知道如何处理我自己的actor系统关机以便与play2配合使用。
我试图在GlobalSettings
方法的onStop
对象中进行此操作,但没有运气。
答案 0 :(得分:1)
使用play.api.libs.concurrent.Akka.system
获取演员系统。您可以在application.conf
中自定义此actor系统。播放会自动启动并关闭它。
如果由于某种原因你真的不想使用它(但实际上,我想不出你为什么不使用它的任何理由),那么你需要等待actor系统关闭使用GlobalSettings.onStop
的{{1}}方法。调用ActorSystem.awaitTermination
是非阻止的,因此当Play重新启动时,shutdown
可能无法完全关闭并释放该端口。
另外,不要在控制器中创建actor系统。在ActorSystem
中创建它,或者实现Global
接口并在那里创建一个(后者适用于任何具有生命周期的东西)。