要在程序中控制服务的上下线可以用下面方式
@Autowired
private ConsulAutoServiceRegistration consulAutoServiceRegistration;
public static Boolean STATUS = Boolean.TRUE;
@GetMapping("/switch")
public Boolean switchStatus(){
STATUS = !STATUS;
if (STATUS) {
consulAutoServiceRegistration.start();
}else{
consulAutoServiceRegistration.stop();
}
return STATUS;
}
- 注入
ConsulAutoServiceRegistration consulAutoServiceRegistration;
- 调用
ConsulAutoServiceRegistration
的stop()
进行服务下线,调用start()
进行服务的上线。
注意服务下线后Consul确实能够快速的发现该服务确实下线,但是对于其他消费该服务的服务来说不会立刻觉察到,要过一段时间才可以。可能是由于 ribbon的缓存机制。
参考
[1]. bishion . sc-consul 停服反注册功能 . http://springcloud.cn/view/356