当前位置: 首页 > 知识库问答 >
问题:

使用Spring Webflux Reactive WebClient设置连接超时

费子濯
2023-03-14

为(默认)WebClient设置(连接)超时的正确方法是什么?

仅仅在得到的单声道(或通量)上使用Mono#timeout(Duration)方法就够了吗?还是这会导致可能的内存/连接泄漏?

提前道谢!

(Spring5WebFlux的答案是如何在Webclient上设置超时的,但不起作用!)

共有1个答案

弓明亮
2023-03-14

从Reactor Netty 0.8和Spring Framework 5.1开始,您可以设置连接、读写超时,如下所示:

TcpClient tcpClient = TcpClient.create()
                 .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 1000) // Connection Timeout
                 .doOnConnected(connection ->
                         connection.addHandlerLast(new ReadTimeoutHandler(10)) // Read Timeout
                                   .addHandlerLast(new WriteTimeoutHandler(10))); // Write Timeout
WebClient webClient = WebClient.builder()
    .clientConnector(new ReactorClientHttpConnector(HttpClient.from(tcpClient)))
    .build();
 类似资料:
  • 问题内容: 我正在使用PDO从MySQL服务器获取数据。我注意到的是:如果MySQL服务器不可用,则此代码返回异常 实际上 需要(相对)长的时间: 如果使用MySQL,则发生异常(SQLSTATE [HY000] [2003]无法在…上连接到MySQL服务器)仅需2分钟以上,而在PostgreSQL上则需要30秒(SQLSTATE [08006] [7]超时已过期) )。 我尝试使用PDO ::

  • 因为我计划从v.3升级httpclient依赖项。第1至第4节。5.13,但后来我意识到,许多功能已经改变,其中之一就是多线程HttpConnectionManager已经从最新版本中删除。当我搜索一个等价类时,stackoverflow HttpClient 4中的一篇文章——多线程HttpConnectionManager发生了什么事?,建议使用PoolightTPClientConnecti

  • 问题内容: 我正在尝试使用Java设置网络超时我的Oracle数据库连接。但是,我遇到了错误。以下是示例代码及其各自的例外。 我得到的异常是: 我相信这与抽象方法有关(请参见AbstractMethodError)。可能导致此错误的原因是我只实现了我认为已经在Java中定义的方法,因此不拒绝编译。 注意:如果有抽象方法,Java不允许编译具体的类。 问题答案: 是JDBC 4.1中引入的,而JDB

  • 我知道volley有一个重试策略,但我知道,这是针对套接字超时,而不是连接超时,Apache HttpClient有setConnectionTimeout和setSoTimeout方法,有人知道我是否要为volley framework设置连接超时吗。

  • Hi想知道是否有办法设置套接字的超时,以及在连接握手之前重试的次数。我在非常糟糕的连接模式下测试了我的应用程序,我为我在Volley中的请求设置了重试策略为10秒,但SSL握手似乎是个问题,因为它有一个默认的超时设置为60秒,而Volley超时只被触发当套接字由于尝试次数或超时而失败时。 下面是我的方法: 我正在使用截击来提出我的请求,我实现这一点的方法是: 我还尝试设置了这样的超时:

  • 问题内容: 在jersey 1中,我们在类中具有一个函数setConnectTimeout。 在球衣2中,缺少此功能的地方使用该类。 如何在jersey 2.x中设置连接超时并读取超时? 问题答案: 下面的代码在Jersey 2.3.1中对我有用(灵感在这里找到:https :