Akka/Play를 기반으로 클러스터 응용 프로그램을 개발 중이며 프런트 엔드 노드가 클러스터에 의해 격리 될 수 있습니다. 이 경우 다시 시작하고 클러스터에 다시 참여할 수 있도록 Play 응용 프로그램을 종료하고 싶습니다.DefaultApplicationLifecycle.stop을 호출 할 때 Play Framework 응용 프로그램이 중단되지 않습니다.
정상적으로 재생 응용 프로그램을 중지하는 올바른 방법은 ApplicationLifecycle
을 사용하는 것이 었습니다. 종속성 주입을 사용하여 DefaultApplicationLifecycle
개체를 얻고 ThisActorSystemQuarantinedEvent
이 발생할 때마다 defaultApplicationLifecycle.stop()
을 호출합니다.
내 문제는 응용 프로그램이 여전히 실행되고 HTTP 포트에서 수신 대기하는 이상한 상태로 끝나지만 거의 아무것도 작동하지 않는 것입니다 (모든 액터는 죽은 것처럼 보입니다). 내 응용 프로그램에 stopHook
을 정의하는 동안 Future
이 완료되지 않은 것처럼 보입니다. 어떤 시점에서 System.exit()
에 전화해야합니까?
'DefaultApplicationLifecycle # stop'처럼 모든 중지 후크가 실행됩니다. 스스로 실제 프로세스를 처리해야합니다. 미래가 결코 끝나지 않는다면 어떤 이유에서든 중지 이유 중 하나가 완료되지 않았기 때문일 수 있습니다 (아무 것도 추가되지 않았기 때문에가 아니라). –