我已经使用 Spring Reactive 框架创建了一个合成应用程序来研究缓存机制,这是由 Webflux 提出的。我注意到的是,当我使用Webclient
指向第三方 URL 的 , 方法时,使用它的方法会被调用两次,而WebClient
指向我自己端点的 , 就像预期的那样,每个请求只调用一次。
我想知道为什么会这样?
这是我的页面抽象代码,当 awebClient
与 localhost URL 相关联时,getBody()
每个请求只调用一次方法。但是当 webClient 与https://other.size关联时,这个方法被调用两次,所以我看到 log.info 消息两次:
public class Page {
private Mono<String> res;
public Page(WebClient webClient, String url) {
res = webClient.get()
.uri(url)
.retrieve()
.bodyToMono(String.class)
.cache();
}
public Mono<String> getBody() {
log.info("getting data");
return res;
}
}
这是完整项目的链接:https : //github.com/RassulYunussov/webluxmisery
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句