【发布时间】:2018-09-21 03:44:30
【问题描述】:
我目前正在将我们现有的 Spring 异步 REST 架构迁移到 Spring 的新 WebFlux 库,并且有一个关于加入多个请求以便它们可以监听相同的已发布响应的问题。
用例如下:
- 客户端 A 连接到我们的网络服务器并请求数据
- 我们访问缓存以检查是否有数据
- 我们没有,所以我们去检索这些数据(客户端 A 已订阅并等待响应)
- 客户端 B 连接到我们的 Web 服务器并请求相同的数据(访问相同的端点)
- 我们检查缓存,数据仍然不存在
- 由于我们已经在为客户端 A 获取此数据,因此我们不想发出另一个请求,但是我们也不想拒绝客户端 B。客户端 B 应该能够监听相同的信息
客户端 B 如何订阅客户端 A 正在等待的相同响应流?
【问题讨论】:
-
你能提供代码 sn-ps 来展示缓存库 API 的样子吗?另外,这里的预期行为是什么?我假设缓存可能不包含要发送给客户端的原始响应,所以它是关于在服务层共享缓存数据,而不一定是在 Web 层?
-
我实际上只是想知道反应模式是否可能。示例中使用缓存来说明为什么请求可能不会立即得到响应。我想知道两个请求是否到达同一个端点,WebFlux 是否可以加入它们并允许它们都等待相同的响应?显然,经典的 REST 和 Spring 无法做到这一点,但我希望反应式流可以实现这种行为。
标签: java spring spring-webflux reactive reactive-streams