在Play2开发模式下关闭Akka系统

时间:2014-03-10 11:00:14

标签: playframework-2.0 akka akka-cluster

我正在使用Akka和Play2开发我的应用程序。

当我第一次使用~run运行play2应用程序并进行GET时,我在Controller中创建了自定义Actor系统,并在2558端口启动了一个集群。

如果更改我的代码中的任何内容并进行另一个GET播放重新编译并重新开始,因为它假设但是2558端口被占用并且我有错误:Failed to bind to /127.0.0.1:2558

我不知道如何处理我自己的actor系统关机以便与play2配合使用。 我试图在GlobalSettings方法的onStop对象中进行此操作,但没有运气。

1 个答案:

答案 0 :(得分:1)

使用play.api.libs.concurrent.Akka.system获取演员系统。您可以在application.conf中自定义此actor系统。播放会自动启动并关闭它。

如果由于某种原因你真的不想使用它(但实际上,我想不出你为什么不使用它的任何理由),那么你需要等待actor系统关闭使用GlobalSettings.onStop的{​​{1}}方法。调用ActorSystem.awaitTermination是非阻止的,因此当Play重新启动时,shutdown可能无法完全关闭并释放该端口。

另外,不要在控制器中创建actor系统。在ActorSystem中创建它,或者实现Global接口并在那里创建一个(后者适用于任何具有生命周期的东西)。