我想使用一些Rest服务。以前我用过RestTemplate,但是现在我想知道SpringBoot FeignClient和WebClient的主要区别是什么?何时应该使用它们?
WebClient是一种无阻塞的反应式客户端。
佯装正在阻止。
为了能够回答“何时”,需要了解每个人的能力。
SpringWebClient是一个无阻塞的响应式客户端,用于发出HTTP请求。因此,如果您打算使用Spring Reactive Stream API异步传输数据,那么这就是方法。思考事件驱动架构。WebClient是Spring WebFlux库的一部分。
3是一个声明性REST库,它使用基于注释的架构和线程请求模型。这意味着线程将阻塞,直到假装客户端收到响应。阻塞代码的问题是它必须等到消费线程完成,因此考虑内存和CPU周期。
因此,当需要非阻塞HTTP请求时,请使用Spring WebClient,否则由于简单的使用模型而假装。
(注意:没有理由说明为什么不能使用WebClient进行阻塞操作,但是Feign更成熟,它基于注释的模型使它更容易)
主要区别在于WebClient支持响应式调用。你可以通过像https://github.com/Playtika/feign-reactive这样的第三方虚拟客户端来实现这一点,但基本上对于一种反应式的方式,你应该考虑将WebClient与一些整洁的异步连接器一起使用,比如Jetty。另一方面,如果你想要一个麻烦最小的阻塞方式,那么假装可能是你最好的选择。