为何需要平滑发布
在使用eureka
作为服务注册中心,应用之间通过FeignClient
调用时,正常情况下,被调用方在发布时,调用方是有短暂时间调用不到服务的,提示报错: No route to Host
。针对这种情况,需要实现eureka
的平滑发布功能。其实,也就是实现点火,熄火接口。
springboot1.5+的实现
配置文件配置
eureka.instance.initialStatus=OUT_OF_SERVICE
management.health.eureka.enabled=false
management.health.discoveryClient.enabled=false
spring.cloud.discovery.client.composite-indicator.enabled=false
自定义类实现MvcEndpoint
@ManagedResource
@Configuration
public class EurekaStatusEndpoint implements MvcEndpoint {
@Resource
private ServiceRegistry serviceRegistry;
@Resource
private Registration registration;
@RequestMapping(path = "instance-status", method = RequestMethod.POST)
@ResponseBody
@ManagedOperation
public Object setStatus(@RequestBody String status) {
if (this.registration == null) {
throw new</