Pav*_*vel 2 java rest spring-mvc long-polling spring-boot
您是否愿意分享任何最新的手册,或者在这里解释如何用最新的Spring(Spring Boot)实现REST Long Polling端点?
到现在为止,我发现的所有内容都已经过时,并且是几年前发布的。
因此,我提出一个问题,长轮询仍然是一种好方法吗?我知道国际象棋使用了它
对于长时间的拉拔请求,您可以使用DeferredResult。当您返回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;
}
Run Code Online (Sandbox Code Playgroud)
在此请求中,等待10秒后给出响应。如果您等待100秒以上,您将收到超时响应。
看这个。
| 归档时间: |
|
| 查看次数: |
4730 次 |
| 最近记录: |