【问题标题】:Webflux Webclient - increase my Webclient time out (wait a bi more a flaky service)Webflux Webclient - 增加我的 Webclient 超时(多等一点不稳定的服务)
【发布时间】:2021-05-25 07:13:34
【问题描述】:

关于Spring Webflux Webclient的小问题,请教如何增加客户端超时。

设置,我是客户端,我需要通过网络使用第三方 API。

已知此第三方 API 不稳定。对于同样的请求,同样的响应,有时需要 1-2 秒,有时超过 4-5 秒(大多是 4-5 秒??????)

但它是一个很好且重要的 API,payload 响应非常重要。

因此,我认为“等待他们更长时间”是值得的。

请问怎么做?

经过调查,这个第三方 API 确实看到了一些来自其 VIP 的 499 响应。

我相信这意味着“我不想等待”。但我确实想等待更长的时间!

查看 Webclient API 后,我很难找到如何做到这一点。

目前,我正在构建我的 WebClient:

WebClient.create().mutate().defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE, HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE).clientConnector(new ReactorClientHttpConnector(HttpClient.create().metrics(true, () -> new MicrometerChannelMetricsRecorder(SERVICE, HTTP)).wiretap(true).secure(sslContextSpec -> sslContextSpec.sslContext(getSslContextBuilder())))).build()

当前的默认超时时间是多少?

请问如何通过属性或代码增加?

类似:

.setDefaultClientSideWaitTime() ?

非常感谢您的帮助

【问题讨论】:

标签: java spring-webflux


【解决方案1】:

尝试在此处设置responseTimeout,就像为WebTestClient 所做的那样: https://stackoverflow.com/a/48655749/4725964

【讨论】:

  • 这可以是对问题的评论
【解决方案2】:

根据 Netty 团队的回答,它需要:

.responseTimeout(Duration.ofSeconds(10))

.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10 * 1000)

以等待 10 秒为例

conn.addHandlerLast

.timeout(Duration.ofSeconds(10L))

不需要

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-06
    • 2021-07-07
    • 2020-05-18
    • 2018-05-09
    • 2021-08-13
    • 2019-05-30
    • 2019-08-28
    • 2012-04-02
    相关资源
    最近更新 更多