我们有许多Spring Boot应用程序可以通过Consul注册(通过Spring Cloud Consul)。如果我通过docker-compose stop myservice
停止这些申请,那么他们会正确地取消注册并从领事处消失。
如果我使用docker-compose kill myservice
,则取消注册不会发生。我知道在UNIX系统上捕获SIGKILL事件是不可能的,所以没有办法强制取消注册。
我们所看到的是Consul中从未删除过的服务(标记为critical
但在UI中仍然可见)。有没有办法强迫Consul刷新注册的内容,以便删除死亡的服务?
由于
尼克
答案 0 :(得分:1)
看来,您必须使用Consul HTTP API并手动取消注册不可用的服务。 API为您提供了两种不同的方式来取消注册某些服务,第一种方式是agent endpoint,如此
curl -v -X PUT http://%CONSUL_IP%:8500/v1/agent/service/deregister/<ServiceID>
和第二个通过catalog。不幸的是,在这两种情况下,您都必须手动发出http请求。