zoukankan      html  css  js  c++  java
  • 微服务监控平台获取网关(zuul)配置列表

    步骤:

    (1)读取zuul的配置文件,获取路由配置项信息;

        private static Properties props;
    
        static {
            String fileName = "application.properties";
            props = new Properties();
            try {
                props.load(new InputStreamReader(PropertiesUtil.class.getClassLoader().getResourceAsStream(fileName), "UTF-8"));
            } catch (IOException e) {
                log.error("配置文件读取异常", e);
            }
        }

    (2)在获取到的配置项信息中截取出服务的路由配置信息;

        /**
         * 根据zuul.routes.KSKZT.serviceId
         * 获取KSKZT
         * @param key
         * @return
         */
        public static String getRoutesKey(String key){
            return key.replace("zuul.routes.", "").replace(".serviceId", "");
        }
        
        /**
         * 根据KSKZT
         * 获取zuul.routes.KSKZT.path
         * @param key
         * @return
         */
        public static String getRoutesPathKey(String key){
            return "zuul.routes."+key+".path";
        }
        
        /**
         * 根据zuul.routes.KSKZT.path
         * 获取/KSKZT/**
         * @param pathKay
         * @return
         */
        public static String getRoutesPathPalue(String pathKay){
            return props.getProperty(pathKay.trim());
        }
        
        /**
         * 获取系统配置的注册名称
         * @return
         */
        public static String getApplicationName(){
            return props.getProperty("spring.application.name");
        }
        
        /**
         * 获取路由表
         * @return
         */
        public static List<Map<String,String>> getRouteList(){
            List<Map<String,String>> routeList = new ArrayList<>();
            for(Object key : props.keySet()){
                if(key.toString().startsWith("zuul.routes") && key.toString().endsWith(".serviceId") ){
                    Map< String, String> route = new HashMap<String, String>();
                    route.put("serviceName",props.get(key)+"");
                    route.put("servicePath",getApplicationName()+getRoutesPathPalue(getRoutesPathKey(getRoutesKey(key.toString()))));
                    routeList.add(route);
                }
            }
            return routeList;
        }
        

    测试获取到的路由表

        public static void main(String[] args) {
            List<Map<String,String>> list = getRouteList();
            for (Map<String,String> object : list) {
                System.out.println("********************");
                System.out.println(object.get("serviceName"));
                System.out.println(object.get("servicePath"));
                
            }
        }

    (3)保证监控平台获取正确的路由表;

      1)在监控平台启动时:通过HttpClient请求zuul提供的接口,获取路由表信息

      2)在zuul启动时:通过的HttpClient请求监控平台的更新接口,将路由表作为参数传递给监控平台,监控平台接受并更新。

  • 相关阅读:
    同步和异步Http请求工具类通过get和post方式发送请求
    c# IPC实现本机进程之间的通信
    C# 建立window服务
    WPF 将控件绑定到变量
    WPF触发器的使用
    C# DataTable 和List之间相互转换的方法
    WPF自适应窗体实现小结
    WPF简单导航框架(Window与Page互相调用)
    JavaEE框架面试题
    快速排序
  • 原文地址:https://www.cnblogs.com/excellencesy/p/12373659.html
Copyright © 2011-2022 走看看