spring web请求延迟返回

2022-12-06  本文已影响0人  yiang飞扬

无意间发现spring可以通过DeferredResult实现请求延时返回,当客户端请求的时候,可能数据还没准备好或者需要等待其它业务,这时候我们可以使用DeferredResult,等数据准备好的时候在返回。示例如下:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.async.DeferredResult;

@RestController
public class TestDeferredResultController {
    @GetMapping("/getDeferredResult")
    public DeferredResult test(){

        DeferredResult deferredResult=new DeferredResult(6000l,"timetout");
        new Thread(){
            public void run(){
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                deferredResult.setResult("delay result"+i);
            }
        }.start();
        return deferredResult;
    }
}

在实际业务中,我们可以根据业务在合适的地方执行 deferredResult的setResult方法。如果我们自己实现,可能需要我们通过循环或者监听的方式来实现,有了DeferredResult 实现起来就相对简单了。

上一篇 下一篇

猜你喜欢

热点阅读