Reputation: 153
I’m a spring-boot newbie, so please go easy on me.
I need to offer a way for an administrator to start and stop my spring-boot microservice from a job scheduler. If I can create start.bat
and stop.bat
files for the service, then the scheduler could call them.
How do I stop a spring-boot microservice from command line without killing the process? I'd like a graceful exit, if possible.
The host will be a Windows server.
Upvotes: 7
Views: 19162
Reputation: 61
Starting spring version 2.3 there is support for graceful shutdown via spring property
server.shutdown=graceful
for new incoming requests the server will immediately issue 503 "Service unavailable" if any ongoing requests is yet to be processed it will for default time which we can change via below property
spring.lifecycle.timeout-per-shutdown-phase=1m
Upvotes: 0
Reputation: 89
The easiest way to kill a process using cmd is by typing this single line of command:
> kill $(lsof -t -i:port_num)
Upvotes: 1
Reputation: 31
In cmd:
netstat -ano | findstr :[port_on_which_app_runs]
then
taskkill /PID [PID_of_the_app] /F
Found here
Upvotes: 3
Reputation: 206796
If you have Spring Boot Actuator included in your project, you can enable a shutdown endpoint (by default it is not enabled). This means that if you make a request to: http://yourserver.com/yourapp/shutdown, the application will shutdown gracefully. An administrator could do such a request using a standard tool such as curl.
See Endpoints in the Spring Boot reference documentation. You can enable the shutdown endpoint by adding the following to your application.properties
:
endpoints.shutdown.enabled=true
Ofcourse, you'll want to restrict access to this endpoint, otherwise anyone who has access to the service could do a request and shutdown the application.
Upvotes: 6