Dubbo是通过JDK的ShutdownHook来完成优雅停机的,所以如果用户使用“kill -9 PID”等强制关闭指令,是不会执行优雅停机的,只有通过“kill PID”时,才会执行。
原理
服务提供方
服务消费方
设置优雅停机超时时间,缺省超时时间是10秒:(超时则强制关闭)
<dubbo:application ...> <dubbo:parameter key="shutdown.timeout" value="60000" /> <!-- 单位毫秒 --> </dubbo:application>
如果ShutdownHook不能生效,可以自行调用:
ProtocolConfig.destroyAll();