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

使用 OkHttp3 和 ReactiveX Java 实现长轮询的正确方法

求教,django与长轮询,该怎么解决

Node.js:这个长轮询实现是不是泄漏:

Tornado-长轮询_webSocket