一、yml文件配置
# 应用名称
spring.application.name=provider
# 应用服务 WEB 访问端口
server.port=8000
eureka.client.service-url.defaultZone=http://euk1.com:7001/eureka/
# 暴露全部端口
management.endpoints.web.exposure.include=*
#开启关闭节点 允许远程关闭此节点
management.endpoint.shutdown.enabled=true
#上报健康状态
eureka.client.healthcheck.enabled=true
二、实现HealthIndicator接口
@Component
public class HealthStatusServer implements HealthIndicator {
private Boolean status = true;
public HealthStatusServer() {
this.status = status;
}
@Override
public Health health() {
if (status){
return new Health.Builder().up().build();
}
return new Health.Builder().down().build();
}
public String getStatus() {
return this.status.toString();
}
public void setStatus(Boolean status) {
this.status = status;
}
}
三、接口实现
@Autowired
HealthStatusServer hsrv;
@GetMapping("health")
public String health(@RequestParam("status") Boolean status) {
hsrv.setStatus(status);
return hsrv.getStatus();
}
四、测试
eureka因为心跳机制有一定延迟,所以进行测试的时候,可能不会立即生效
正常在线状态
调用http://laptop-ccrui6v2:8000/health?status=false 下线操作
下线成功