Spring Boot2.x Eureka 主动下线服务与优雅停机(Graceful Shutdown)
参考
- https://www.jianshu.com/p/199e419c025e
- https://blog.csdn.net/u014643282/article/details/116004816
- https://www.cnblogs.com/frankltf/p/12673568.html
- gpt
注意
- Spring Boot 还支持关闭事件监听,在监听事件内可以编写代码实现关闭前的清理工作。
- Eureka 主动下线方式有多种,本文
DiscoveryManager.getInstance().shutdownComponent();
方式提示方法过时。 - 主动下线服务与优雅停机是两个东西,可以单独任意使用,只是写在了一篇文章中。
环境
环境 | 版本 | 说明 |
---|---|---|
Windows | 10 | |
VS Code | 1.85.1 | |
Spring Boot Extension Pack | v0.2.1 | vscode插件 |
Extension Pack for Java | v0.25.15 | vscode插件 |
JDK | 11 | |
Spring Boot | 2.3.12.RELEASE | |
spring-cloud-dependencies | Hoxton.SR12 | mvn依赖 |
spring-cloud-starter-netflix-eureka-client | 未设置 | mvn依赖 |
spring-cloud-starter-netflix-eureka-server | 未设置 | mvn依赖 |
spring-cloud-starter-openfeign | 未设置 | mvn依赖 |
Eureka主动下线服务
- 任意服务,开放任意接口,执行以下代码即可主动退出服务中心,并且不会再次主动加入服务中心:
... import com.netflix.discovery.DiscoveryManager; ... DiscoveryManager.getInstance().shutdownComponent();
优雅停机
准备
Spring Boot 2.3 + 新增内置功能,无需添加依赖。
-
修改
application.properties
。#开启优雅停机,默认是立即停机IMMEDIATE server.shutdown=graceful #缓冲器即最大等待时间 spring.lifecycle.timeout-per-shutdown-phase=20s
-
IndexController.java
测试。package com.xiaqiuchu.demo.controller; import org.springframework.web.bind.annotation.RestController; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Slf4j @RestController @RequestMapping("/") public class IndexController { @RequestMapping(value = "index", method=RequestMethod.GET) public String index() throws InterruptedException { log.info("收到新请求"); // 模拟业务耗时处理流程 Thread.sleep(15 * 1000L); // return "hello"; } }
测试
- 运行项目,浏览器访问一次,然后 windows 下
Ctrl
+c
, linux 下执行kill -2
,再次访问。 - 测试得知,已存在的请求将会继续执行并正常返回(超出设置的等待时间则会强制结束),新请求会超时(不会进入控制器)。
博 主 :夏秋初
地 址 :https://www.cnblogs.com/xiaqiuchu/p/17956150
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
地 址 :https://www.cnblogs.com/xiaqiuchu/p/17956150
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义