SpringBoot2.0 優雅停機

weixin_34320159發表於2018-06-25

最近新建了個SpringBoot2.0的專案,因為原來一直使用的是傳統的Tomcat部署war包的形式,所以這次SpringBoot內建Tomcat部署jar包的時候遇到了很多問題。其中一個就是因為沒有外接的Tomcat容器導致無法按原來的方法優雅停機。
經過了反覆的搜尋發現SpringBoot可以引用spring-boot-starter-actuator來暴露shutdown埠。

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

在pom檔案中加入上面的程式碼就OK了。
再在application.properties中加入下面的配置,這裡注意2.0和1.0的配置項不一樣。

management.endpoint.shutdown.enabled=true

將下面的地址埠換成實際的地址埠,之後輸入命令列。

curl -X POST localhost:port/actuator/shutdown

你就會發現404了!這就是最坑的地方,在SpringBoot1.0的時候這裡已經收到{"message": "Shutting down, bye..."}了。但是2.0還需要在application.properties加入一個配置項,將shutdown介面暴露出去。

management.endpoints.web.exposure.include=shutdown

這時SpringBoot2.0就可以優雅停機了,當然隨便這樣暴露介面並不安全,再加入一些安全的配置就OK了。

相關文章