首页 > 编程开发 > Java    日期:2026-07-20 / 浏览

发布新版本时如果直接 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);
    }
}

觉得上面的内容有用吗?快来点个赞吧!

点赞() 我要打赏

温馨提示 : 本站内容来自会员投稿以及互联网,所有源码及教程均为作者总结编辑,请大家在使用过程中提前做好备份,以免发生无法预知的错误,源码类教程请勿直接用于生产环境!

 可能感兴趣的文章