Java 服务器端长时间运行的请求超时
我有一个Spring Boot应用程序,我想实现的是,当我的rest控制器处理一个请求需要更长的时间时,只需发送一个错误而不继续处理该请求。这可能吗?我如何在不修改控制器级别但在应用程序级别的情况下实现它。这是在最新的Spring boot上发布的Java 服务器端长时间运行的请求超时,java,spring,spring-boot,rest,microservices,Java,Spring,Spring Boot,Rest,Microservices,我有一个Spring Boot应用程序,我想实现的是,当我的rest控制器处理一个请求需要更长的时间时,只需发送一个错误而不继续处理该请求。这可能吗?我如何在不修改控制器级别但在应用程序级别的情况下实现它。这是在最新的Spring boot上发布的2.2.6。发布版您可以使用DeferredResult实现它 请参见此示例: @GetMapping("/test") DeferredResult<String> test(){ Long timeOutInMi
2.2.6。发布版您可以使用DeferredResult实现它
请参见此示例:
@GetMapping("/test")
DeferredResult<String> test(){
Long timeOutInMilliSec = 10000L;
String timeOutResp = "Time Out.";
DeferredResult<String> deferredResult = new DeferredResult<>(timeOutInMilliSec,timeOutResp);
CompletableFuture.runAsync(()->{
try {
//Long pooling task;If task is not completed within 100 sec timeout response retrun for this request
TimeUnit.SECONDS.sleep(100);
//set result after completing task to return response to client
deferredResult.setResult("Task Finished");
}catch (Exception ex){
}
});
return deferredResult;
}
@GetMapping(“/test”)
延迟结果测试(){
长时间输出毫秒=10000L;
字符串timeOutResp=“超时。”;
DeferredResult DeferredResult=新的DeferredResult(timeOutInMilliSec,timeOutResp);
CompletableFuture.runAsync(()->{
试一试{
//长池任务;如果任务未在100秒内完成,则超时响应重新运行此请求
时间单位。秒。睡眠(100);
//在完成任务后设置结果以将响应返回给客户端
deferredResult.setResult(“任务完成”);
}捕获(例外情况除外){
}
});
返回延迟结果;
}
此处请求睡眠时间100
秒,但在延迟结果
超时设置中
10
秒。因此,10秒后,您将获得超时。
响应。。。如果你设定
睡眠时间少于10秒,您将获得任务完成
响应
这是详细信息。Webflux还是MVC?我使用的是MVC。所以servlet