springboot设置程序执行超时时间
springboot2.x
方法一,通过配置文件:
spring.mvc.async.request-timeout=2s
webconfig需要继承WebMvcConfigurerAdapter,有点过时了这个
public class WebMvcConfig extends WebMvcConfigurerAdapter{ }
controller代码
@GetMapping("/index") @ResponseBody public Callable<JsonResult> index() { return new Callable<JsonResult>() { @Override public JsonResult call() { try { Thread.sleep(60000); } catch (InterruptedException e){ Thread.interrupted(); return JsonResult.failure("执行失败"); }catch (Exception e){ e.printStackTrace(); return JsonResult.failure("执行失败"); } return JsonResult.success(); } }; }
方法二:
webconfig实现WebMvcConfigurationSupport 的bean
public class WebMvcConfig extends WebMvcConfigurationSupport { @Override public void configureAsyncSupport(final AsyncSupportConfigurer configurer) { configurer.setDefaultTimeout(1); configurer.registerCallableInterceptors(timeoutInterceptor()); } @Bean public TimeoutCallableProcessingInterceptor timeoutInterceptor() { return new TimeoutCallableProcessingInterceptor(); } }
controller代码
@GetMapping("/index") @ResponseBody public Callable<JsonResult> index() throws InterruptedException { return new Callable<JsonResult>() { @Override public JsonResult call() throws Exception { Thread.sleep(60000); return JsonResult.success(); } }; }