SpringBoot FeignClient 与 WebClient
SpringBoot FeignClient vs WebClient
我想使用一些休息服务。之前用过RestTemplate,现在想知道SpringBoot FeignClient和WebClient的主要区别是什么?
什么时候应该使用它们?
主要区别在于 WebClient 支持 Reactive 调用。
您可以使用像 https://github.com/Playtika/feign-reactive 这样的第 3 方伪造客户端来实现这一点,但基本上对于一种反应性的方式,您应该考虑将 WebClient 与一些简洁的异步连接器(如 Jetty)一起使用。另一方面,如果您想要一种麻烦最少的阻塞方式,那么 Feign 可能是您的最佳选择。
为了能够回答“何时”,需要了解每个人的能力。
Spring WebClient 是一个 非阻塞 响应式客户端,用于发出 HTTP 请求。因此,如果您打算使用 Spring Reactive Stream API to stream data asynchronously then this is the way to go. Think event-driven architecture. WebClient is part of the Spring WebFlux 库。
[Feign]3 是一个声明式 REST 库,它使用基于注释的架构和每个请求线程模型。这意味着线程将阻塞,直到 feign 客户端收到响应。阻塞代码的问题是它必须等到消耗线程完成,因此考虑内存和 CPU 周期。
所以在需要非阻塞 HTTP 请求时使用 Spring WebClient 否则 Feign 由于简单的使用模型。
(注:没有理由不能使用WebClient进行阻塞操作,但Feign更成熟,基于注解的模型使其更容易)
WebClient 是一个非阻塞反应。
Feign 正在阻塞。
我想使用一些休息服务。之前用过RestTemplate,现在想知道SpringBoot FeignClient和WebClient的主要区别是什么? 什么时候应该使用它们?
主要区别在于 WebClient 支持 Reactive 调用。 您可以使用像 https://github.com/Playtika/feign-reactive 这样的第 3 方伪造客户端来实现这一点,但基本上对于一种反应性的方式,您应该考虑将 WebClient 与一些简洁的异步连接器(如 Jetty)一起使用。另一方面,如果您想要一种麻烦最少的阻塞方式,那么 Feign 可能是您的最佳选择。
为了能够回答“何时”,需要了解每个人的能力。
Spring WebClient 是一个 非阻塞 响应式客户端,用于发出 HTTP 请求。因此,如果您打算使用 Spring Reactive Stream API to stream data asynchronously then this is the way to go. Think event-driven architecture. WebClient is part of the Spring WebFlux 库。
[Feign]3 是一个声明式 REST 库,它使用基于注释的架构和每个请求线程模型。这意味着线程将阻塞,直到 feign 客户端收到响应。阻塞代码的问题是它必须等到消耗线程完成,因此考虑内存和 CPU 周期。
所以在需要非阻塞 HTTP 请求时使用 Spring WebClient 否则 Feign 由于简单的使用模型。
(注:没有理由不能使用WebClient进行阻塞操作,但Feign更成熟,基于注解的模型使其更容易)
WebClient 是一个非阻塞反应。
Feign 正在阻塞。