环境:SpringBoot2.7.15
1. 简介
Feign-reactive是一个用于在Spring Cloud应用程序中实现响应式微服务的框架。它支持在Spring Cloud应用程序中实现异步和非阻塞的远程调用。Feign-reactive的一些主要特点:
- 基于Feign的简洁风格:Feign-reactive继承了Feign的简洁风格,使得在编写基于微服务架构的应用程序时,可以更加方便地实现异步编程。
- 支持Reactive编程模型:Feign-reactive提供对Reactive编程模型的支持,使得在编写异步和非阻塞的代码时更加容易。
- 异步和非阻塞远程调用:通过Feign-reactive,可以轻松地实现异步和非阻塞的远程调用,从而提高应用程序的响应速度和吞吐量。
- 与Spring Cloud集成:Feign-reactive与Spring Cloud集成,使得可以在Spring Cloud应用程序中方便地使用Feign-reactive实现响应式微服务。
- 可扩展性:Feign-reactive具有可扩展性,可以根据需要添加自定义的拦截器、编码器和解码器等。
Feign-reactive是一个非常有用的框架,可以帮助开发人员轻松地实现响应式微服务,提高应用程序的性能和吞吐量。
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 ; }
开启反应式功能
@EnableReactiveFeignClients public class AppFeignReactorApplication {}
基于反应式的Feign接口定义
@ReactiveFeignClient( url = "http://localhost:8088/demos", name = "demoReactorFeign" ) public interface DemoReactorFeign { @GetMapping("/info/{id}") public Mono
以上就完成了一个非常简单的反应式feign接口定义,接下来就可以使用了。其实这里除了注解与openfeign不一样外,其它都一样。
测试调用
@Resource private DemoReactorFeign demoReactorFeign ; @GetMapping("/{id}") public Object info(@PathVariable("id") Integer id) { return this.demoReactorFeign.info(id) ; }
调用结果
接下来会介绍更多关于反应式feign的配置
配置降级
@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
自定义配置
public class DemoReactorFeignConfig { @Bean public DemoReactorFeignFallback demoReactorFeignFallback() { return new DemoReactorFeignFallback() ; } }
当远程接口调用失败或超时将会执行上面的fallback。
图片
超时配置
reactive: feign: client: config: demoReactorFeign: options: connectTimeoutMillis: 2000 readTimeoutMillis: 2000
负载均衡配置
reactive: feign: loadbalancer: enabled: true
断路器配置
reactive: feign: circuit: breaker: enabled: true
要使其生效,必须引入下面的依赖
< dependency> < groupId>org.springframework.cloud< /groupId> < artifactId>spring-cloud-starter-circuitbreaker-reactor-resilience4j< /artifactId> < /dependency>
原文地址:https://mp.weixin.qq.com/s/Sb2zxTF2hdlEN4UmVa0qlg