如果直接KILL SpringCloud的服務,因爲Eureka採用心跳的機制來上下線服務,會導致服務消費者調用此已經kill的服務提供者然後出錯,處理這種情況有2中方案。
一、利用Spring Boot Actuato的管理端點(推薦)
1、pom中引用Actuato
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
2、properties中添加如下內容
#啓用shutdown endpoints.shutdown.enabled=true #禁用密碼驗證 endpoints.shutdown.sensitive=false
如果只允許本機訪問,可以添加如下屬性
#(只允許本機訪問) server.address=localhost
3、在服務器上利用curl發送shutdown命令
curl -X POST http://localhost:8080/shutdown 或者 curl -d "" http://localhost:8080/shutdown
二、利用Eureka的rest管理端點下線服務
eureka界面註冊的服務:
發送DELETE的Restfull請求
對照關係看上面的2張圖。
注意:由於cloud服務是心跳檢測,所有在eureka進行DELETE後要快速的停止服務,否則服務可能會被重新註冊上。