首页 > 其他分享 >Spring Boot2.x 优雅停机 Graceful Shutdown

Spring Boot2.x 优雅停机 Graceful Shutdown

时间:2024-01-10 11:46:24浏览次数:34  
标签:web Spring Graceful Boot springframework Shutdown 停机 import

参考

注意

  1. Spring Boot 还支持关闭事件监听,在监听事件内可以编写代码实现关闭前的清理工作。

环境

环境 版本 说明
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 Boot 2.3 + 新增内置功能,无需添加依赖。

  1. 修改 application.properties
#开启优雅停机,默认是立即停机IMMEDIATE
server.shutdown=graceful
#缓冲器即最大等待时间
spring.lifecycle.timeout-per-shutdown-phase=20s
  1. 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";
    }
}

测试

  1. 运行项目,浏览器访问一次,然后 windows 下 Ctrl+c, linux 下执行 kill -2,再次访问。
  2. 测试得知,已存在的请求将会继续执行并正常返回(超出设置的等待时间则会强制结束),新请求会超时(不会进入控制器)。

标签:web,Spring,Graceful,Boot,springframework,Shutdown,停机,import
From: https://www.cnblogs.com/xiaqiuchu/p/17956150

相关文章

  • 基于SpringBoot+Vue的流浪动物领养信息系统设计实现(源码+lw+部署文档+讲解等)
    (文章目录)前言:heartpulse:博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌:heartpulse:......
  • Spring MVC 源码分析 - ViewResolver 组件
    ViewResolver组件ViewResolver 组件,视图解析器,根据视图名和国际化,获得最终的视图View对象回顾先来回顾一下在 DispatcherServlet 中处理请求的过程中哪里使用到 ViewResolver 组件,可以回到《一个请求的旅行过程》中的 DispatcherServlet 的 render 方法中看看,如下:prote......
  • 浅谈spring-retry
    使用方法@ComponentpublicclassRetryableXX{ //使用重试框架须知: //该注解无事务性!!!! //该注解是同步操作,重试次数与时间间隔需要慎重考虑!!!! //使用重试注解时,务必匹配@Recover回调方法,否则重试次数会平方!!!! //被调用的重试方法必须是被代理过的,否则重试效果不生效!!!! //匹......
  • SpringBoot集成WebSocket实现消息推送
    一、前言WebSocket是一种新型的通信协议,它可以在客户端和服务端之间实现双向通信,具有低延迟、高效性等特点,适用于实时通信场景。它是一种基于TCP协议实现的全双工通信协议,使用它可以实现实时通信,不必担心HTTP协议的短连接问题。SpringBoot可以很方便的集成WebSocket实现高效实时的......
  • #星计划# 在OpenHarmony上使用网络组件axios与Spring Boot进行前后端交互
    在OpenHarmony上使用网络组件axios与SpringBoot进行前后端交互#jitoa#此博客由金陵科技学院-开放原子开源社李俊杰编写仓库地址:axiosTest·AtomGit_开放原子开源基金会代码托管平台结果演示:在OpenHarmony上使用网络组件axios与SpringBoot进行前后端交互_哔哩哔哩_bilib......
  • springboot通过自定义注解@Log实现日志打印
    springboot通过自定义注解@Log实现日志打印效果图实操步骤注意,本代码在springboot环境下运行,jdk1.81.引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><dependency>......
  • spring boot自动装配原理
    学习笔记1@SpringBootConfiguration:该注解上有一个@Configuration注解,表示这个springboot启动类是一个配置类,最终要被注入到spring容器中。   2@EnableAutoConfiguration:表示开启自动配置   3@AutoConfigurationPackage,该注解上有一个@Import(AutoConfigurationPacka......
  • 【Spring技术专题】「实战开发系列」保姆级教你SpringBoot整合Mybatis框架实现多数据
    Mybatis是什么Mybatis是一个基于JDBC实现的,支持普通SQL查询、存储过程和高级映射的优秀持久层框架,去掉了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。Mybatis主要思想是将程序中大量的SQL语句剥离出来,配置在配置文件中,以实现SQL的灵活配置。在所有ORM框......
  • Spring MVC 源码分析 - LocaleResolver 组件
    LocaleResolver组件LocaleResolver 组件,本地化(国际化)解析器,提供国际化支持回顾先来回顾一下在 DispatcherServlet 中处理请求的过程中哪里使用到 LocaleResolver 组件,可以回到《一个请求的旅行过程》中的 DispatcherServlet 的 processDispatchResult 方法中看看,如下:priv......
  • 基于SpringBoot+Vue的航班订票管理系统设计实现(源码+lw+部署文档+讲解等)
    (文章目录)前言:heartpulse:博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌:heartpulse:......