Spring WebFlux WebClient:延迟执行

Spring WebFlux WebClient: delay execution

当我这样定义和调用客户端方法时:

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))

我认为这与所谓的冷热出版商有关。

您可以在此处阅读更多相关信息 projectreactor.io/docs/core/release/reference/#reactor.hotCold 要将热门发布商转变为冷门发布商,您可以使用 defer 功能。