栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring Zuul:动态禁用通往服务的路由

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Zuul:动态禁用通往服务的路由

经过大量的努力,我想到了这个解决方案。首先,我使用Netflix Archaius观看属性文件。然后我进行如下操作:

public class ApplicationRouteLocator extends SimpleRouteLocator implements RefreshableRouteLocator {public ApplicationRouteLocator(String servletPath, ZuulProperties properties) {    super(servletPath, properties );}@Overridepublic void refresh() {   doRefresh();}}

通过扩展SimpleRouteLocator并在接口RefreshableRouteLocator的重写之一中调用doRefresh()方法来使其公开。

然后,使用自定义实现重新定义bean RouteLocator:

@Configuration@EnableConfigurationProperties( { ZuulProperties.class } )public class ZuulConfig {public static ApplicationRouteLocator simpleRouteLocator;@Autowiredprivate ZuulProperties zuulProperties;@Autowiredprivate ServerProperties server;@Bean@Primarypublic RouteLocator routeLocator() {    logger.info( "zuulProperties are: {}", zuulProperties );    simpleRouteLocator = new ApplicationRouteLocator( this.server.getServletPrefix(), this.zuulProperties );    ConfigurationManager.getConfigInstance().addConfigurationListener( configurationListener );    return simpleRouteLocator;}private ConfigurationListener configurationListener =        new ConfigurationListener() { @Override public void configurationChanged( ConfigurationEvent ce ) {      // zuulProperties.getRoutes() do something      // zuulProperties.getIgnoredPatterns() do something      simpleRouteLocator.refresh();  }     }}

每次修改文件中的属性时,都会触发一个事件,并且ConfigurationEvent能够处理该事件(getPropertyName()和getPropertyValue()从事件中提取数据)。由于我还自动为ZuulProperties布线,因此可以访问它。遵循正确的规则,我可以找到Zuul的财产

zuul.ignoredPatterns

进行了相应的更改,从而更改了ZuulProperties中的值。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/670741.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号