spring WebClient 中的连接池

Connection pooling in spring WebClient

我想在项目中使用 Spring WebClient 来使用一些外部 Web 服务。

  1. WebClient 对象可以是单例的还是在所有线程(请求)之间共享?
  2. 如果我的应用程序每秒要接收数百万个请求,那么我是否需要汇集 WebClient 对象?如果是,我找不到任何文档或示例。
  3. mono.block() 的内部工作方式是否类似于 future.get()latch.await()

WebClient 是基于 Reactive Stack 构建的 REST 客户端的非阻塞实现,所以我想您应该关注的唯一问题是完成非阻塞调用。

  1. Can WebClient object be a singleton or shared among all threads (requests)?

我到处都看到的标准方法是将 WebClient 作为 bean 注入。我觉得没有理由做任何不同的事情。

@Autowired
WebClient webClient;
  1. If my application is going to get millions of requests per second, then do I need to pool WebClient Objects?

太多了!这肯定需要通过服务复制、负载平衡器、隔板等来解决。就客户端本身而言,请参阅使用较新版本 Spring 的反应式客户端的以下性能:WebFlux Reactive Programming Performance Test。而且,那是预期的最大吞吐量?

  1. Does mono.block() internally work similar to future.get() or latch.await()?

是的,确实如此。