SpringBoot FeignClient vs WebClient



我想使用几个rest服务。以前,我使用RestTemplate,但现在我想知道Spring BootFeignClientWebClient之间的主要区别。

它们应该在什么时候使用?

要想回答"when">,需要了解每个功能。

SpringWebClient是一个非阻塞响应式客户端,用于发出HTTP请求。因此,如果您打算使用Spring Reactive Stream API来异步流式传输数据,那么这就是您要做的事情。想想事件驱动的体系结构。WebClient是SpringWebFlux库的一部分。

[Feign]3是一个声明性REST库,它使用基于注释的体系结构和每个请求的线程模型。这意味着线程将阻塞,直到外部客户端收到响应为止。阻塞代码的问题是它必须等到消耗线程完成,因此考虑内存和CPU周期。

因此,当需要非阻塞HTTP请求时,请使用SpringWebClient,否则由于使用模型简单,请使用Feign

(注意:没有理由不能使用WebClient进行阻塞操作,但Feign更成熟,基于注释的模型使其更容易(

主要区别在于WebClient支持Reactive调用。你可以通过第三方外国客户实现这一点,比如https://github.com/Playtika/feign-reactive但基本上,作为一种被动的方式,您应该考虑将WebClient与一些整洁的异步连接器(如Jetty(一起使用。另一方面,如果你想要一种麻烦最小的阻塞方式,那么Feign可能是你的最佳选择。

WebClient是一个非阻塞的响应式客户端。

费恩在阻拦。

最新更新