gpt4 book ai didi

Netty HttpClient - 响应超时与读取超时

转载 作者:行者123 更新时间:2023-12-04 15:16:45 27 4
gpt4 key购买 nike

HttpClient从提供了各种要配置的“超时”,有两个让我有点困惑:

  • 响应超时:This is time that takes to receive a response after sending a request
  • ReadTimeoutHandler:Raises a ReadTimeoutException when no data was read within a certain period of time

  • 有人可以解释一下它们之间的主要区别吗?

    通用场景 - 使用 spring 响应式(Reactive)调用电话 WebClient , 使用 HttpClient引擎盖下:
  • 建立到远程服务器的连接 >>> 在这里我们利用 ChannelOption.CONNECT_TIMEOUT_MILLIS
  • TLS 握手 >>> 在这里我们利用 ReadTimeoutHandler因为我是对的?
  • 发送请求
  • ...等等...
  • 接收响应 >>> 此处“超时”优先:响应/读取?
  • 最佳答案

    如果您使用 WebFlux 和 Netty,则 httpClient应该是 Netty httpClient .你去那里看过? https://projectreactor.io/docs/netty/release/api/reactor/netty/http/client/HttpClient.html

  • 连接超时 -> 这是正确的,如果您无法连接到
    无论出于何种原因远程服务器,都将使用此 timeOut。
  • TLS 握手,检查:reactor.netty.http.client.HttpClient#secure( ):
    如果没有另外配置,Netty 将假设 10 秒超时
    为了握手。如果要定义另一个超时,请使用reactor.netty.tcp.sslHandshakeTimeout https://projectreactor.io/docs/netty/release/api/reactor/netty/http/client/HttpClient.html#secure--
  • 连接现已建立,您可以发送请求。经过
    使用 ReadTimeoutHandler您可以定义等待多长时间
    通过连接接收数据。这可能是例如
    一次性完成整个响应,如果响应是流式传输的,则为字节。 responseTimeouthttpClient做同样的事情。两者都创建了 TcpClient与给定的 timeOut环境。 ReadTimeoutHandler 的好处是您可以获得一个回调,该回调会在发生超时时执行您定义的逻辑。
  • 关于Netty HttpClient - 响应超时与读取超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64179173/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com