当前位置:网站首页 > 容器化与Kubernetes > 正文

druid连接池配置官方文档(druid连接池两种初始化)



从Spring 5开始WebClient使用Reactive HTTP Client 时有关超时和重试的说明。

验证时的库版本如下。

特别要注意的是,如果Reactor Netty版本发生更改,代码示例可能无法编译。

因为测试案例为超时,所以以下代码192.168.10.110是不存在的计算机/容器的IP地址。

执行此操作时,将输出以下日志。

我订阅了HTTP请求,但发生了连接超时。HTTP请求后30秒发生超时,并onError调用Reactive Streams 方法。发生的异常

可能默认的连接超时值是30秒。

由于30秒很长,我想将超时设置为3秒。这里,timeout(Duration)使用Reactor静态类,使用如下。

执行此操作时,将输出以下日志。

订阅后3秒生成超时,并onError调用该方法。发生的异常

需要打印出HTTP / TCP的建立日志。需要设置WebClient内部使用HttpClient,请执行以下操作。

执行时输出以下日志。

据了解,在关闭HTTP之后,CLOSE进行了30秒。

执行时输出以下日志。

在CONNECT之后,可以看到处理在订阅后3秒被中断而不等待CLOSE。

接下来,在Netty层中设置Connection Timeout。

以下代码设置连接超时值为500 ms。

执行时输出以下日志。

在HTTP CONNECT之后,在500毫秒后关闭,可以看出 异常已经发生了。操作员未被调用,因为它在3秒之前错误地结束timeout。

localhost:8088更改代码的连接目标。这里的假设是本地机器没有端口8088。

执行时输出以下日志。

retryWhentimeout因为外面有一个操作员,无论怎么重试都会在3秒内中断。

执行时输出以下日志。

可以看出该过程如下。

重试两次后, 异常已经发生了。经过的时间约为1.2秒且小于超时时间。

接下来,尝试连接超时案例。在这种情况下,我没有故意设置Netty的连接超时。

执行时输出以下日志。

可以看出该过程如下。

这timeout与第一次引入操作员的结果相同。应注意,即使包括重试控制,也可获得相同的结果。

假设在Connect失败后执行重试,timeout但是处理被中断而不重试,因为在第一个Connect中超出了高级操作员时间。

现在retryWhen并timeout试图改变的顺序。 这里顺序很重要

执行时输出以下日志。

可以看出该过程如下。

timeout除了上述之外,retryWhen总共执行3次超时3秒,并且可以看出完成该过程大约需要10秒。

最后,恢复最后一个的顺序retryWhen并timeout重新设置Netty的连接超时设置。

执行时输出以下日志。

可以看出该过程如下。

也许我认为这个例子接近通常的超时设置。

不要设置Netty的连接超时,而是在之前和之后设置timeout运算符retryWhen

通过这样做可以实现相同的超时,但是在易于理解堆栈跟踪方面,前面的代码更容易理解。

为了使重试按预期工作,有必要了解内部和外部超时之间的差异。

在那之后,把断路器放在这之外是好的,但如果那次谈话是一个机会。

处理程序建立后CONECTION设定的Netty的TcpClient在doOnConnected可以被添加到该方法。

以下代码故意将Read Timeout设置为small,并访问需要一秒钟才能返回响应的服务。

执行时输出以下日志。

在Spring Boot的情况下,ClientHttpConnector如果进行了Bean定义,则会WebClient.Builer自动设置它。

https://github.com/spring-projects/spring-boot/blob/v2.1.1.RELEASE/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/reactive/function/client/ClientHttpConnectorAutoConfiguration.java

ReactorClientHttpConnector定义

WebClient你可以使用WebClient.Builder注入使用。

到此这篇druid连接池配置官方文档(druid连接池两种初始化)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • cruise汉化版(cruise软件汉化)2026-01-16 15:18:08
  • kvm虚拟化有哪些组件组成(kvm虚拟了哪些硬件)2026-01-16 15:18:08
  • list转化成string(list转化成set)2026-01-16 15:18:08
  • 启动docker 容器(启动Docker容器的命令是什么)2026-01-16 15:18:08
  • pointnetvlad(pointnetvlad可视化)2026-01-16 15:18:08
  • ipv6报文分析实例(ipv6报文结构和ipv4相比有什么变化)2026-01-16 15:18:08
  • list转化成string(list转化成字符串)2026-01-16 15:18:08
  • docker版本升级后容器不见了(docker版本升级后容器不见了)2026-01-16 15:18:08
  • kubernetes中kubelet主要功能(kubernetes的作用)2026-01-16 15:18:08
  • crsed汉化(crossed汉化)2026-01-16 15:18:08
  • 全屏图片