获取eureka server自我保护是否触发

Overview

客户端代码内通过某种方式获取 eureka server是否触发自我保护。由于eureka server并未提供任何API或者client sdk方式暴露该指标,只能自己寻找获取方式

解决方式

唯一能够获取eureka server是否开启自我保护的途径是eureka server页面,所以可以通过页面入手。自我保护被触发时页面会显示如下内容
获取eureka server自我保护是否触发_第1张图片
查看spring cloud eureka前端页面的实现逻辑,就能获取自我保护是否被触发。
获取eureka server自我保护是否触发_第2张图片
根据navbar.ftl内容,找到自我保护是否被触发的条件是isBelowRenewThresoldregistry.selfPreservationModeEnabled

根据页面找到对应的后端代码
获取eureka server自我保护是否触发_第3张图片
至此如何获取自我保护是否触发变得非常简单,可以在eureka server自定义一个接口,返回自我保护结果即可。

    @Autowired
    private PeerAwareInstanceRegistry registry;

    @GetMapping("/self-preservation/test")
    public String selfPreservationCheck() {
        return String.valueOf(registry.isBelowRenewThresold() == 1 && registry.isSelfPreservationModeEnabled());
    }

当自我保护触发时,调用接口返回true

你可能感兴趣的:(【Spring,Cloud】,eureka,java)