DeferredResult 实现长轮询
Posted Think_Higher
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DeferredResult 实现长轮询相关的知识,希望对你有一定的参考价值。
文章目录
DeferredResult 的用处
DeferredResult 其实是基于 Servlet 3.0 对异步请求的支持而来的,我们来看这样一个场景:
当前 controller 里面有个方法 A,其内部逻辑依赖 redis 里面的一个值,如果 redis 里面有值了,就可以获取返回,如果没值这时候没有东西可以返回,只能返回 null,而往 redis 塞入值依赖另一个后台线程。
正常的实现我们肯定可以想到轮询的方案,即浏览器不断轮询方法 A,直到有值才停止轮询,但是有时候过于频繁的轮询会给服务器产生压力。
而这时候 DeferredResult 就可以登场啦,从名字我们就可以知道:延期的结果。
我们来简单的看下使用方式:
以上是关于DeferredResult 实现长轮询的主要内容,如果未能解决你的问题,请参考以下文章
Spring - DeferredResult 异步返回实现
如何测试 DeferredResult timeoutResult