在Google Appengine Standard上使用Spring Boot 2.0.0.RELEASE。使用自动缩放,但试图控制实例的创建/销毁。需要能够进行一些清理并希望记录这些事件。
Spring Boot中的任何方法(如@Predestroy或ContextClosedEvent)似乎都不适用于GAE。
根据文档,应该可以通过添加关闭钩子来检测实例的关闭。
Documentation LifecycleManager.ShutdownHook.
试图将它放在几个地方但没有成功。
作为@Bean的示例:
@Bean
public LifecycleManager lifecycleManager() {
LifecycleManager lifecycle_manager = LifecycleManager.getInstance();
lifecycle_manager.setShutdownHook(new ShutdownHook() {
public void shutdown() {
LifecycleManager.getInstance().interruptAllRequests();
log.error("Shutdown " + getClassSimpleName() + ".");
}
});
log.warn("Created shutdown hook.");
return lifecycle_manager;
}
已正确安装Shutdown hook,但在实例关闭时不会触发。