AppEngine标准检测关闭时的Spring-Boot

时间:2018-03-22 21:00:57

标签: spring google-app-engine spring-boot java-8

在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,但在实例关闭时不会触发。

1 个答案:

答案 0 :(得分:0)

您可以阅读Google Issue Tracker

  

关闭挂钩仅适用于标准运行时(...)上的手动缩放实例。

关机钩子根本不用于自动和基本缩放。