1. 程式人生 > >關於Spring Cloud Eureka對服務的上下線監控(重點),續約,註冊,啟動等

關於Spring Cloud Eureka對服務的上下線監控(重點),續約,註冊,啟動等

關於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