JavaSpringWebFlux网络客户端:延迟执行
当我这样定义和调用客户机方法时:
webClient.get()
.uri(endpoint)
.headers(this::configureHttpHeaders)
.retrieve()
.bodyToMono(String.class)
即使我对返回的Mono不做任何操作,retrieve
方法也会被执行
我本以为只有在有人(订户?)时才会调用它实际上,我想从Mono上获取数据
为什么会马上打电话?我怎样才能改变这种行为
有关更多上下文:在我的示例中,我只希望在触发CacheFlux onCacheMissResume时执行它:
Flux<T> defaulValue= client.getStringMono()
.flatMapIterable(mapper::readObjects);
CacheFlux.<String, T>lookup(key -> readFluxFromCache(cacheName, key), cacheKey)
.onCacheMissResume(defaulValue)
.andWriteWith((key, valueSignal) -> writeFluxToCache(cacheName, key, valueSignal))
# 1 楼答案
我认为这与所谓的冷热出版商有关
您可以在此处阅读有关它们的更多信息projectreactor.io/docs/core/release/reference/#reactor.hotCold要将热发布服务器转换为冷发布服务器,您可以使用
defer
函数