发布新版本时如果直接 kill 进程,正在处理的请求会中断,数据可能不一致。优雅关闭让应用处理完当前请求再停止。
一、优雅关闭
server:
shutdown: graceful
spring:
lifecycle:
timeout-per-shutdown-phase: 30s二、手动降级
@component
public class degradeservice {
private final map<string, boolean> degraderules = new concurrenthashmap<>();
public boolean isdegrade(string key) {
return degraderules.getordefault(key, false);
}
public void enabledegrade(string key) {
degraderules.put(key, true);
}
public void disabledegrade(string key) {
degraderules.put(key, false);
}
public <t> t execute(string key, supplier<t> supplier, t fallback) {
if (isdegrade(key)) return fallback;
return supplier.get();
}
}
三、熔断降级
@restcontroller
public class degradecontroller {
@autowired
private degradeservice degradeservice;
@postmapping("/degrade/enable")
public resultvo<?> enable(@requestparam string key) {
degradeservice.enabledegrade(key);
return resultvo.success("已开启: " + key);
}
@postmapping("/degrade/disable")
public resultvo<?> disable(@requestparam string key) {
degradeservice.disabledegrade(key);
return resultvo.success("已关闭: " + key);
}
}
到此这篇关于springboot实现优雅关闭与降级的完整代码的文章就介绍到这了,更多相关springboot优雅关闭与降级内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论