Java 如何在Spring Boot应用程序中实现长轮询REST端点?
您是否愿意分享最新的手册,或者在此解释如何使用最新的Spring(Spring Boot)实现REST长轮询端点 我发现的所有东西都已经过时了,是几年前发行的Java 如何在Spring Boot应用程序中实现长轮询REST端点?,java,rest,spring-mvc,spring-boot,long-polling,Java,Rest,Spring Mvc,Spring Boot,Long Polling,您是否愿意分享最新的手册,或者在此解释如何使用最新的Spring(Spring Boot)实现REST长轮询端点 我发现的所有东西都已经过时了,是几年前发行的 所以,我提出了一个问题:长期投票仍然是一个好方法吗?我知道它在chess.com中使用对于长拉请求,您可以使用延迟结果。当您返回DeferredResult响应时,请求线程将是空闲的,此请求由工作线程处理。以下是一个例子: @GetMapping("/test") DeferredResult<String> test
所以,我提出了一个问题:长期投票仍然是一个好方法吗?我知道它在chess.com中使用对于长拉请求,您可以使用
延迟结果
。当您返回DeferredResult响应时,请求线程将是空闲的,此请求由工作线程处理。以下是一个例子:
@GetMapping("/test")
DeferredResult<String> test(){
Long timeOutInMilliSec = 100000L;
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(10);
//set result after completing task to return response to client
deferredResult.setResult("Task Finished");
}catch (Exception ex){
}
});
return deferredResult;
}
@GetMapping(“/test”)
延迟结果测试(){
长时间输出毫秒=100000L;
字符串timeOutResp=“超时。”;
DeferredResult DeferredResult=新的DeferredResult(timeOutInMilliSec,timeOutResp);
CompletableFuture.runAsync(()->{
试一试{
//长池任务;如果任务未在100秒内完成,则超时响应重新运行此请求
时间单位。秒。睡眠(10);
//在完成任务后设置结果以将响应返回给客户端
deferredResult.setResult(“任务完成”);
}捕获(例外情况除外){
}
});
返回延迟结果;
}
在此请求中,等待10秒后给出响应。如果您等待超过100秒,您将得到超时响应
看