java – Reactive Streams:Spring WebFlux – 订阅现有的发布者

我目前正在将现有的Spring异步REST架构迁移到Spring的新WebFlux库,并且有一个关于加入多个请求的问题,以便他们可以监听相同的已发布响应.

用例如下:

>客户端A连接到我们的Web服务器并请求数据
>我们点击缓存以检查我们是否有数据
>我们没有,所以我们去检索这些数据(客户A已经订阅并等待响应)
>客户端B连接到我们的Web服务器并请求相同的数据(命中相同的端点)
>我们检查缓存,数据仍然不存在
>由于我们已经为客户A提取此数据,因此我们不想再提出请求,但我们也不希望将客户B转移.客户B应该能够收听相同的信息

客户端B如何订阅客户端A等待的相同响应流?

解决方法:

“客户A已订阅并等待回复”
我想这个请求被编码为Mono,而客户端A则按字面意思对它进行编码:

订户LT;响应&GT clientA = …
 单&LT响应&GT request = makeRequest(…);
 request.subscribe(客户端A);

然后clientB应该以相同的方式订阅:

订户LT;响应&GT clientB = …
 request.subscribe(clientB);

此外,高速缓存不应包含先前保存的响应数据,而应包含Mono< Response>类型的请求本身.然后,如果在缓存中找到这样的请求,则新客户端只需订阅它,无论该请求是否已经完成.

上一篇:vue3 todolist


下一篇:java-Spring Reactive使用ServerRequest获取正文JSONObject