知道了原因,改起来就容易了,我的做法很简单:StatePrinterGatewayFilter不再实现Ordered,这样就和CircuitBreaker的filter一样,执行的是上图红框中的代码,这样,在配置文件中,谁放在前面谁就先执行
代码就不贴出来了,您自行删除StatePrinterGatewayFilter中和Ordered相关的部分即可
配置文件调整后如下:
server: #服务端口 port: 8081 spring: application: name: circuitbreaker-gateway cloud: gateway: routes: - id: path_route uri: :8082 predicates: - Path=http://www.likecs.com/hello/** filters: - name: CircuitBreakerStatePrinter - name: CircuitBreaker args: name: myCircuitBreaker改完了,再次运行CircuitbreakerTest.java,如下图,这一次,每个请求都会打印出此时断路器的状态:
知识点小结至此,用于观测断路器状态的自定义过滤器就算完成了,整个过程还是有不少知识点的,咱们来盘点一下:
常规的局部过滤器开发步骤
过滤器执行顺序的逻辑
spring的依赖注入和自动装配
断路器的filter源码
java的反射基本功
本文与《Spring Cloud Gateway的断路器(CircuitBreaker)功能》结合,诚意满满的带给您理论结合实战的体验,希望能给您学习Spring Cloud Gateway的过程中带来一些参考;
你不孤单,欣宸原创一路相伴Java系列
Spring系列
Docker系列
kubernetes系列
数据库+中间件系列
DevOps系列
欢迎关注公众号:程序员欣宸微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...
https://github.com/zq2599/blog_demos