深入ReactiveFeign:反应式远程接口调用的最佳实践
2023-12-26 09:30:03 软件 344观看
摘要环境:SpringBoot2.7.151. 简介Feign-reactive是一个用于在Spring Cloud应用程序中实现响应式微服务的框架。它支持在Spring Cloud应用程序中实现异步和非阻塞的远程调用。Feign-reactive的一些主要特点:基于Feign的简洁

环境:SpringBoot2.7.153Qa28资讯网——每日最新资讯28at.com

1. 简介

Feign-reactive是一个用于在Spring Cloud应用程序中实现响应式微服务的框架。它支持在Spring Cloud应用程序中实现异步和非阻塞的远程调用。Feign-reactive的一些主要特点:3Qa28资讯网——每日最新资讯28at.com

  1. 基于Feign的简洁风格:Feign-reactive继承了Feign的简洁风格,使得在编写基于微服务架构的应用程序时,可以更加方便地实现异步编程。
  2. 支持Reactive编程模型:Feign-reactive提供对Reactive编程模型的支持,使得在编写异步和非阻塞的代码时更加容易。
  3. 异步和非阻塞远程调用:通过Feign-reactive,可以轻松地实现异步和非阻塞的远程调用,从而提高应用程序的响应速度和吞吐量。
  4. 与Spring Cloud集成:Feign-reactive与Spring Cloud集成,使得可以在Spring Cloud应用程序中方便地使用Feign-reactive实现响应式微服务。
  5. 可扩展性:Feign-reactive具有可扩展性,可以根据需要添加自定义的拦截器、编码器和解码器等。

Feign-reactive是一个非常有用的框架,可以帮助开发人员轻松地实现响应式微服务,提高应用程序的性能和吞吐量。3Qa28资讯网——每日最新资讯28at.com

2. 依赖管理

<dependency>  <groupId>com.playtika.reactivefeign</groupId>  <artifactId>feign-reactor-spring-configuration</artifactId>  <version>3.3.0</version></dependency><dependency>  <groupId>com.playtika.reactivefeign</groupId>  <artifactId>feign-reactor-cloud</artifactId>  <version>3.3.0</version></dependency><dependency>  <groupId>com.playtika.reactivefeign</groupId>  <artifactId>feign-reactor-webclient</artifactId>  <version>3.3.0</version></dependency>

3. 实战案例

远程接口

@GetMapping("/demos/info/{id}")public Object info(@PathVariable("id") Integer id) throws Exception {  TimeUnit.SECONDS.sleep(3) ;  Map<String, Object> result = new HashMap<>() ;  result.put("code", 0) ;  result.put("data", id) ;  result.put("message", "success") ;  return result ;}

开启反应式功能

@EnableReactiveFeignClientspublic class AppFeignReactorApplication {}

基于反应式的Feign接口定义

@ReactiveFeignClient(    url = "http://localhost:8088/demos",     name = "demoReactorFeign")public interface DemoReactorFeign {  @GetMapping("/info/{id}")  public Mono<Object> info(@PathVariable("id") Integer id) ;}

以上就完成了一个非常简单的反应式feign接口定义,接下来就可以使用了。其实这里除了注解与openfeign不一样外,其它都一样。3Qa28资讯网——每日最新资讯28at.com

测试调用

@Resourceprivate DemoReactorFeign demoReactorFeign ;@GetMapping("/{id}")public Object info(@PathVariable("id") Integer id) {  return this.demoReactorFeign.info(id) ;}

调用结果3Qa28资讯网——每日最新资讯28at.com

图片3Qa28资讯网——每日最新资讯28at.com

接下来会介绍更多关于反应式feign的配置3Qa28资讯网——每日最新资讯28at.com

配置降级

@ReactiveFeignClient(    url = "http://localhost:8088/demos",     name = "demoReactorFeign",     fallback = DemoReactorFeignFallback.class,    configuration = {DemoReactorFeignConfig.class})public interface DemoReactorFeign {

降级接口定义

public class DemoReactorFeignFallback implements DemoReactorFeign {  @Override  public Mono<Object> info(Integer id) {    return Mono.just("请求失败") ;  }}

自定义配置

public class DemoReactorFeignConfig {  @Bean  public DemoReactorFeignFallback demoReactorFeignFallback() {    return new DemoReactorFeignFallback() ;  }  }

当远程接口调用失败或超时将会执行上面的fallback。
3Qa28资讯网——每日最新资讯28at.com

图片图片3Qa28资讯网——每日最新资讯28at.com

超时配置3Qa28资讯网——每日最新资讯28at.com

reactive:  feign:    client:      config:        demoReactorFeign:          options:            connectTimeoutMillis: 2000            readTimeoutMillis: 2000

负载均衡配置3Qa28资讯网——每日最新资讯28at.com

reactive:  feign:    loadbalancer:      enabled: true

断路器配置3Qa28资讯网——每日最新资讯28at.com

reactive:  feign:    circuit:      breaker:       enabled: true

要使其生效,必须引入下面的依赖3Qa28资讯网——每日最新资讯28at.com

<dependency>  <groupId>org.springframework.cloud</groupId>  <artifactId>spring-cloud-starter-circuitbreaker-reactor-resilience4j</artifactId></dependency>


3Qa28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-54152-0.html深入ReactiveFeign:反应式远程接口调用的最佳实践

声明:本网页内容旨在传播知识,不代表本站观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。

显示全文

上一篇:Go 框架 Beego 真的有那么差劲吗

下一篇:LangChain应用开发指南-熟用LCEL语法掌握Chain的精髓

最新热点