当前位置: 首页 > 知识库问答 >
问题:

Spring靴优雅关机

邹英发
2023-03-14

我正在开发一个由嵌入式Tomcat支持的Spring Boot应用程序,我需要通过以下步骤开发一个优雅的关机:

  1. 停止处理新的HTTP请求(停止web容器)
  2. 处理所有已接受的请求
  3. 关闭Spring ApplicationContext

附注。Spring Boot 1.5.20版本,Java 8

共有1个答案

曹乐意
2023-03-14

Graceful shutdown支持在Spring Boot 2.3(2020年5月发布)中添加。这允许活动请求在关闭上下文和关闭容器之前完成。

启用优雅关机后,应用程序将在关机时依次执行以下步骤:

  • 停止接受新请求
  • 将等待一些可配置的时间来处理已接受的请求
  • 停止容器
  • 停止嵌入式服务器
    null

对于Spring Boot<2.3,您需要修补服务器的连接器,以停止接受新的请求,这在Spring GitHub问题中进行了说明。

 类似资料:
  • 在spring boot中有没有一种方法可以控制App的优雅关机。 我知道在bean中可以使用@predestroy方法,但如何控制调用这些@predestroy方法的顺序。 您可以有多个相互依赖的bean,上下文的关闭是否已经寻找这种依赖关系并以正确的顺序调用@predestroy方法? 2.)阻止rabbit消息侦听器接受新消息 3.)等待关机前已经开始但尚未完成的所有处理。

  • 我一直在努力理解Spring Boot,也许会把我的项目移植到它上面。然而,除了嵌入式Tomcat,我并没有得到它的真正优势。你能给我解释一下与普通Spring相比,Spring靴的真正威力是什么吗?

  • 优雅关闭,包括两部分,一个是 RPC 框架作为客户端,一个是 RPC 框架作为服务端。 作为服务端 作为服务端的时候,RPC 框架在关闭时,不应该直接暴力关闭。在 RPC 框架中 com.alipay.sofa.rpc.context.RpcRuntimeContext 在静态初始化块中,添加了一个 ShutdownHook // 增加jvm关闭事件 if (RpcConf

  • null 我正在尝试做一个优雅的关闭Rest应用程序和SCS(Kafka消费者和生产者)应用程序

  • 我用的是spring kafka 1.2.2。释放目前,我已经为没有BackOffPolicy和AlwaysRetryPolicy的容器配置了重试模板。确认模式为手动或立即。 当一个SIGTERM出现时,我会让当前消息被处理,当@KafkaListener再次被调用时,我会在容器上抛出RuntimeException,该容器会无限期重试并持续抛出异常。一段时间后,SIGKILL被发出,容器被停止(

  • Dorado的优雅关闭通过ShutDownHook方式实现,调用端和服务端通过添加hook进行资源的清理和关闭 protected synchronized void addShutDownHook() { if (hook == null) { hook = new ShutDownHook(this); Runtime.getRuntime().addS