标签: WebClient
SpringBoot WebClient
05/18/2021WebClientWebFluxProgrammatic
WebClient
Spring 有两个web客户端的实现,一个是RestTemplate另一个是spring5的响应代替WebClient。
WebClient是一个以Reactive方式处理HTTP请求的非阻塞客户端。
-
RestTemplate是阻塞客户端
- 它基于thread-pre-requset模型。
- 这意味着线程将阻塞,直到 Web 客户端收到响应。阻塞代码的问题是由于每个线程消耗了一些内存和 CPU 周期。当出现慢速请求的时候,等待结果的线程会堆积起来,将导致创建更多的线程、消耗更多的资源。频繁切换CPU资源也会降低性能。
-
WebClient是异步、非阻塞的方案。
-
WebClient将为每个事件创建类似于“任务”的东西。在幕后,Reactive 框架会将这些“任务”排队并仅在适当的响应可用时执行它们。
-
WebClient是Spring WebFlux库的一部分。因此,我们还可以使用具有反应类型(Mono和Flux的功能性、流畅的 API 作为声明性组合来编写客户端代码。
-
底层支持的库
- Reactor Netty - ReactorClientHttpConnector
- Jetty ReactiveStream HttpClient - JettyHttpConnector
-
-
关于IDEA开启 Reactive Streams DEBUG