1

Spring Cloud 应用程序被记录为具有以下端点:

/pause 和 /resume 用于调用 Lifecycle 方法(ApplicationContext 上的 stop() 和 start())

我怀疑这将是在 eureka 中将实例标记为 OUT_OF_SERVICE 的方式,因为 EurekaDiscoveryClientConfiguration 中的代码是一个实现SmartLifecycle的弹簧类:

@Override
public void stop() {
    log.info("Unregistering application " + this.instanceConfig.getAppname()
            + " with eureka with status OUT_OF_SERVICE");
    if (ApplicationInfoManager.getInstance().getInfo() != null) {
        ApplicationInfoManager.getInstance().setInstanceStatus(
                InstanceStatus.OUT_OF_SERVICE);
    }
    this.running.set(false);
}

但是,当我 POST 到 /pause 端点时,我得到一个 200 响应代码(值为 'true'),但上述代码从未执行。

也许我不明白一些事情。如果是这样,我如何触发上述代码使实例停止服务?

(当我关闭实例时会调用EurekaDiscoveryClientConfiguration类的close()方法- 这会导致实例未注册 - 但我希望暂时暂停对该实例的服务)

4

0 回答 0