您好,我使用的是Spring Webflux的webClient。我有一些类似的代码:
@Configuration
class WebClientConfig(
@Value("\${url}")
private val url: String
) {
@Bean
@Primary
fun webClient(): WebClient {
return createWebClient(700)
}
@Bean("more_timeout")
fun webClientMoreTimeout(): WebClient {
return createWebClient(3000)
}
private fun createWebClient(timeout: Int): WebClient{
val httpClient = HttpClient.create()
.tcpConfiguration { client -> client.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, timeout) }
return WebClient.builder()
.baseUrl(url)
.clientConnector(ReactorClientHttpConnector(httpClient))
.build()
}
}
此配置是因为我需要具有不同超时的呼叫。假设我有一个服务A对于我的响应来说非常重要,所以我想等待响应最多3秒钟,并且假设y有另一个服务B,C等,这对我的响应不是很重要,我只会等待700ms生成响应。我可以将谁存档? 先前的配置无法正常工作,因为webClient是不可变的。
答案 0 :(得分:0)
我认为您无法在webClient级别执行此操作,但可以在Reactor级别执行操作,例如:
return webClient.post()
.uri { uriBuilder ->
uriBuilder.path(PATH)
.build()
}
.body(BodyInserters.fromObject(Request()))
.accept(MediaType.APPLICATION_JSON_UTF8)
.exchange()
.timeout(Duration.ofMillis(1000L))