Spring Cloud Eureka中如何实现服务实例的优雅下线?
- 内容介绍
- 文章标签
- 相关推荐
本文共计338个文字,预计阅读时间需要2分钟。
应用服务实例下线时,Eureka Client 向 Eureka Server 发送下线应用实例。需满足以下条件才可触发:+ 配置 eureka.registration.enabled=true,开启应用实例注册。+ 应用实例开启注册。
应用服务实例下线
1、Eureka Client发起下线
应用实例关闭时,Eureka Client向Eureka Server发起下线应用实例。需要满足如下条件才可发起:
- 配置eureka.registration.enabled=true,应用实例开启注册开关。默认为false
- 配置eureka.shouldUnregisterOnShutdown=true,应用实例开启关闭时下线开关。默认为true
Eureka Client端有一个shutdown方法,服务实例下线的时候,会主动调用这个方法。
@Singleton public class DiscoveryClient implements EurekaClient { /** * 关闭Eureka客户端。还将注销请求发送到Eureka服务器 */ @PreDestroy @Override public synchronized void shutdown() { if (isShutdown.compareAndSet(false, true)) { logger.info("Shutting down DiscoveryClient ..."); if (statusChangeListener != null && applicationInfoManager != null) { applicationInfoManager.unregisterStatusChangeListener(statusChangeListener.getId()); } //将定时调度任务都停止 cancelScheduledTasks(); // If APPINFO was registered //如果注册到了Eureka Server,通知Server下线 if (applicationInfoManager != null && clientConfig.shouldRegisterWithEureka() && clientConfig.shouldUnregisterOnShutdown()) { applicationInfoManager.setInstanceStatus(InstanceStatus.DOWN); //服务下线 unregister(); } if (eurekaTransport != null) { eurekaTransport.shutdown(); } heartbeatStalenessMonitor.shutdown(); registryStalenessMonitor.shutdown(); Monitors.unregisterObject(this); logger.info("Completed shut down of DiscoveryClient"); } } void unregister() { // It can be null if shouldRegisterWithEureka == false if(eurekaTransport != null && eurekaTransport.registrationClient != null) { try { logger.info("Unregistering ..."); // 调用AbstractJerseyEurekaHttpClient的cancel方法 EurekaHttpResponse<Void> blog.csdn.net/qq_40378034/article/details/119079180本文共计338个文字,预计阅读时间需要2分钟。
应用服务实例下线时,Eureka Client 向 Eureka Server 发送下线应用实例。需满足以下条件才可触发:+ 配置 eureka.registration.enabled=true,开启应用实例注册。+ 应用实例开启注册。
应用服务实例下线
1、Eureka Client发起下线
应用实例关闭时,Eureka Client向Eureka Server发起下线应用实例。需要满足如下条件才可发起:
- 配置eureka.registration.enabled=true,应用实例开启注册开关。默认为false
- 配置eureka.shouldUnregisterOnShutdown=true,应用实例开启关闭时下线开关。默认为true

