關於Spring Cloud Eureka對服務的上下線監控(重點),續約,註冊,啟動等
阿新 • • 發佈:2018-12-11
關於Spring Cloud Eureka對服務的上下線監控(重點),續約,註冊,啟動等
專案上監聽各個服務宕機後的資訊,提供eureka的5個監聽器
EurekaInstanceCanceledEvent 服務下線事件
EurekaInstanceRegisteredEvent 服務註冊事件
EurekaInstanceRenewedEvent 服務續約事件
EurekaRegistryAvailableEvent Eureka註冊中心啟動事件
EurekaServerStartedEvent Eureka Server啟動事件
Eureka服務端的配置
server: port: 8081 eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ server: #關閉自我保護,開發和測試環境可以關閉,生產環境建議開啟,防止網路不好時刪除了可用服務。 enable-self-preservation: false #清理間隔 eviction-interval-timer-in-ms: 5000
Eureka事件監聽類
package com.itmuch.cloud.EurekaListener; import com.netflix.appinfo.InstanceInfo; import org.springframework.cloud.netflix.eureka.server.event.*; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; /** * Eureka事件監聽 * * @author sunbohu * @create 2018-11-15 13:45 **/ @Component public class EurekaStateChangeListener { @EventListener public void listen(EurekaInstanceCanceledEvent event) { System.err.println(event.getServerId() + "\t" + event.getAppName() + " 服務下線"); } @EventListener public void listen(EurekaInstanceRegisteredEvent event) { InstanceInfo instanceInfo = event.getInstanceInfo(); System.err.println(instanceInfo.getAppName() + "進行註冊"); } @EventListener public void listen(EurekaInstanceRenewedEvent event) { System.err.println(event.getServerId() + "\t" + event.getAppName() + " 服務進行續約"); } @EventListener public void listen(EurekaRegistryAvailableEvent event) { System.err.println("註冊中心 啟動"); } @EventListener public void listen(EurekaServerStartedEvent event) { System.err.println("Eureka Server 啟動"); } }
實際專案要根據需求做相應的通知,這裡只是簡單記錄。
客戶端配置
spring: application: name: member eureka: instance: #這裡的instance配置一定要寫,不然導致服務下線無法被監聽,因為服務下線後eureka沒有將該服務踢出 # 每間隔5s,向服務端傳送一次心跳,證明自己依然可用存活 lease-renewal-interval-in-seconds: 5 # 告訴服務端,如果我10s之內沒有給你發心跳,就代表我的服務下線了變成不可用,將我踢出掉。 lease-expiration-duration-in-seconds: 10 client: serviceUrl: defaultZone: http://localhost:8081/eureka/ server: port: 8082