Spring Cloud Gateway-最佳实践-单个路由配置错误无法启动 解决方案

1.背景

        我们的应用场景是,网关的路由断言配置都是由客户自己定义,由于前期配置规则约束较少。这样就会由于某个用户配置的错误路由,影响到全局的配置,导致整个网关启动错误。

        Gateway版本:2.2.0.BUILD-SNAPSHOT

2.分析

        通过查看源码,发现网关加载路由配置信息代码如下:

        在类org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator中,加载路由方法:

         某个路由信息转换加载:

      发现,单个路由信息加载无任何处理异常,如果出现异常将直接影响到全局加载。

3.思考及解决方案

其实这种设计并不一定有问题,只是不适合于我们的应用场景。那么,最暴力的解决办法,修改源码,在convertToRoute方法内进行异常处理,不进行抛出。当然,这样做的副作用会有好多,关于版本升级,后续的维护性等等都是问题。(一般不建议直接修改源码来解决问题)

那么我们再想其他办法。我们在配置加载前,把类进行重写。我们可以通过springAOP,将getRoutes()方法重写,在convertToRoute出现异常时,不抛出。

4.代码示例

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容