WebFlux Flux.cache() 缓存发出的数据存储多长时间

问题描述 投票:0回答:1

背景: 我有一个有限的 Flux,它是 Rest API 调用的来源,并且该通量位于对我的 Spring Boot 应用程序进行的主 REST API 调用的范围内,该应用程序返回 Mono 并响应。我想为两个订阅重用此 Rest API 的响应。我发现 Flux cache() 正在解决这个任务,但问题是:

如果没有指定 ttl 持续时间,第一次订阅发出的数据将在内存中存储多长时间?我们是否应该以某种方式清除此缓存以避免内存泄漏,或者它只会存在于特定外部主 HTTP 请求的范围内(订阅 Mono 将触发内部 Flux 订阅)并在 Flux 终止后被清除?

在文档中没有找到有关此内容的任何详细信息:https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#cache--

spring spring-webflux project-reactor
1个回答
0
投票

正如 @Igor Atamanov 提到的,在没有指定 ttl 的情况下缓存的发出数据将存储在内存中,直到订阅并重用此通量的最后一个订阅者无法完成他的订阅。

© www.soinside.com 2019 - 2024. All rights reserved.