我正在開發基於Akka/Play的集羣應用程序,其中前端節點可以被羣集隔離。在這種情況下,我想退出Play應用程序,以便它可以重新啓動並重新加入羣集。調用DefaultApplicationLifecycle.stop時,Play Framework應用程序永不停止
我在各種地方閱讀,優雅地停止播放應用程序的正確方法是使用ApplicationLifecycle
。我使用依賴注入來獲取DefaultApplicationLifecycle
對象,並在出現ThisActorSystemQuarantinedEvent
時調用defaultApplicationLifecycle.stop()
。
我的問題是,應用程序結束了一個奇怪的狀態,應用程序仍然運行並偵聽HTTP端口,但幾乎沒有任何工作(所有演員似乎都死了)。看來Future
從未完成,而我在我的應用程序中沒有定義stopHook
。我是否應該在某個時候強制撥打System.exit()
?
它看起來像所有'DefaultApplicationLifecycle#stop'一樣運行所有的停止鉤子。你需要自己處理實際的過程。如果未來從未完成,很可能是因爲其中一個停止掛鉤由於某種原因未能完成(不是因爲沒有添加),儘管很難說出什麼原因或原因。 –