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

在Spring 5 WebClient上设置特定于请求的读取超时的正确方法

曹高轩
2023-03-14

在Spring的反应式WebClient中,是否有一种适当的方法来设置特定于请求的超时,但仍然使用单个ClientHTtpConnector

共有1个答案

梁承恩
2023-03-14

您可以在客户端连接器上配置的超时操作级别相当低:它们是关于套接字/连接超时的。不能在请求级别进行此配置,因为连接可能在连接池中共享和重用。

这个问题是关于响应超时的,因为您似乎关心在每个请求的基础上获得响应的时间量。

在这种情况下,您可以根据每个请求使用timeout运算符:

Mono<UserData> result = this.webClient.get()
                .uri("/user")
                .accept(MediaType.APPLICATION_JSON)
                .retrieve()
                .bodyToMono(UserData.class)
                .timeout(Duration.ofSeconds(10));
 类似资料:
  • 我设法编写了一个相当愚蠢的bug,它会使我的一个请求处理程序运行一个非常慢的DB查询。 有趣的是,我注意到,即使在围攻完成很久之后,龙卷风仍然在翻腾请求(有时是90年代以后)。(评论-->我不是100%确定围攻的工作原理,但我相当肯定它关闭了连接..) 我通读了代码,似乎什么也找不到。尽管我的请求处理程序在上面的bug中异步运行,但挂起的请求数量堆积到了一个降低应用程序速度的水平,关闭连接会更好。

  • 我有一个同步终结点,定义如下: 当30秒后返回的<code>Future<code>未完成时,请求将被取消。 如何增加此特定终结点的超时(例如,增加到 100 秒)? 我只找到了更改所有endpoint的答案: 指定Spring中控制器异步方法的超时时间 延迟结果的Spring长轮询

  • 本文向大家介绍BootstrapTable请求数据时设置超时(timeout)的方法,包括了BootstrapTable请求数据时设置超时(timeout)的方法的使用技巧和注意事项,需要的朋友参考一下 使用bootstrapTable获取数据时,有时由于网络或者服务器的原因,无法及时获取到数据,页面显示一直处于等待状态。为了改善效果,考虑设置超时,请求发送后超时即显示无数据,过段时间重新发起请求

  • 问题内容: 在某些代码块的运行时间超过可接受的时间之后,是否可以强制Java引发Exception? 问题答案: 是的,但是强制另一个线程在随机的代码行上中断通常是一个非常糟糕的主意。仅当您打算关闭该过程时,才这样做。 您可以做的是在一定时间后用于任务。但是,除非代码对此进行检查,否则它将无法正常工作。ExecutorService可以使此操作更容易 代码自动计时并在需要时停止会更好。

  • 由于亚马逊的讨论论坛给出了一个错误,我在这里发布了这个问题。 null

  • 问题内容: 我现在使用的代码: 似乎工作正常,但我不确定在将ByteBuffer返回池之前是否需要ByteBuffer。我什至不确定要使用。文档中没有太多关于它的内容。 问题答案: 读取请求正文的一种更简单的方法是将其分派到一个工作线程,该工作线程可以使用。 有两种方法:使用或文档中所示的调度模式。这是使用的示例: 在基本上没有派遣你。