完成上述的代码开发后,我们来进行springcloud-zuul的一系列自定义过滤测试。
首先依次启动springcloud-zuul-filter-eureka、springcloud-zuul-filter-gateway、springcloud-zuul-filter-server1和springcloud-zuul-filter-server2这四个项目。其中9009是服务端springcloud-zuul-filter-gatewayr的端口,9010是第一个客户端springcloud-zuul-filter-server1的端口,9011是第二个客户端springcloud-zuul-filter-server2的端口。
这里顺便说下路由网关的默认规则::ZUUL_PORT/微服务实例名(serverId)/** ,转发至serviceId对应的微服务。比如在浏览器输入::9009/springcloud-zuul-filter-server1/hello地址, 它就会跳转访问到::9010/hello/这个地址上。使用这个方式进行测试可以帮助我们更好的了解本篇文章的实现目的。
自定义过滤器功能测试完成上述的项目启动成功之后。
我们首先在浏览器上输入:
:9009/springcloud-zuul-filter-server1/hello?name=pancm
界面返回:
请求失败!
这里看到直接进行拦截了,并返回了相应的信息、
加上token之后在进行访问
:9009/springcloud-zuul-filter-server1/hello?name=pancm&token=123
界面返回:
pancm,Hello World!
我们按照我们自定的规则进行访问之后,发现可以直接访问到我们想要访问的服务上,因此该次测试也符合我们的预期,达成了自定义过滤器的处理。
自定义异常类处理功能测试上述的功能测试ok之后,这里我们停止掉springcloud-zuul-filter-server1服务,然后在浏览器上输入:
:9009/springcloud-zuul-filter-server1/hello?name=pancm&token=123
界面返回:
请求失败!error:GENERAL请求失败!error:GENERAL
注: 这里实际是调用了两次。
可以看到这次测试也符合我们的预期,达成了自定义异常的处理。
自定义异常回退处理功能测试这里我们再来停止掉springcloud-zuul-filter-server2服务,然后在浏览器上输入:
:9009/springcloud-zuul-filter-server2/hi?name=pancm&token=123
界面返回:
该springcloud-zuul-filter-server2服务暂时不可用!
可以看到这次测试也符合我们的预期,达成了 自定义异常回退处理的处理。这里也顺便说下,自定义该服务的异常和自定义异常回退处理最好不要在同一个服务同时使用,如果同时使用,会优先进行自定义异常回退处理的处理。
其他参考:
https://github.com/Netflix/zuul/wiki/How-it-Works
https://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#_router_and_filter_zuul
https://blog.lqdev.cn/2018/10/17/SpringCloud/chapter-ten/#参考资料
基于SpringBoot2.x、SpringCloud的Finchley版本开发的地址:https://github.com/xuwujing/springcloud-study
如果感觉项目不错,希望能给个star,谢谢!
springcloud系列博客:
SpringCloud学习系列之一 ----- 搭建一个高可用的注册中心(Eureka)
SpringCloud学习系列之二 ----- 服务消费者(Feign)和负载均衡(Ribbon)
SpringCloud学习系列之三----- 断路器(Hystrix)和断路器监控(Dashboard)
SpringCloud学习系列之四-----配置中心(Config)使用详解)
SpringCloud学习系列之五-----配置中心(Config)和消息总线(Bus)完美使用版)
SpringCloud学习系列之六 ----- 路由网关Zuul基础使用教程)
音乐推荐