code: public static RouterChain buildConsumerChain(ConsumerBootstrap consumerBootstrap) {
          ConsumerConfig<?> consumerConfig = consumerBootstrap.getConsumerConfig();
          List<Router> customRouters = consumerConfig.getRouterRef() == null ? new ArrayList<Router>()
              : new CopyOnWriteArrayList<Router>(consumerConfig.getRouterRef());
          // 先解析是否有特殊处理
          HashSet<String> excludes = parseExcludeRouter(customRouters);
  
          // 准备数据：用户通过别名的方式注入的router，需要解析
          List<ExtensionClass<Router>> extensionRouters = new ArrayList<ExtensionClass<Router>>();
          List<String> routerAliases = consumerConfig.getRouter();
          if (CommonUtils.isNotEmpty(routerAliases)) {
              for (String routerAlias : routerAliases) {
                  if (startsWithExcludePrefix(routerAlias)) { // 排除用的特殊字符
                      excludes.add(routerAlias.substring(1));
                  } else {
                      extensionRouters.add(EXTENSION_LOADER.getExtensionClass(routerAlias));
                  }
              }
          }
          // 解析自动加载的router
          if (!excludes.contains(StringUtils.ALL) && !excludes.contains(StringUtils.DEFAULT)) { // 配了-*和-default表示不加载内置
              for (Map.Entry<String, ExtensionClass<Router>> entry : CONSUMER_AUTO_ACTIVES.entrySet()) {
                  if (!excludes.contains(entry.getKey())) {
                      extensionRouters.add(entry.getValue());
                  }
              }
          }
          excludes = null; // 不需要了
          // 按order从小到大排序
          if (extensionRouters.size() > 1) {
              Collections.sort(extensionRouters, new OrderedComparator<ExtensionClass>());
          }
          List<Router> actualRouters = new ArrayList<Router>();
          for (ExtensionClass<Router> extensionRouter : extensionRouters) {
              Router actualRoute = extensionRouter.getExtInstance();
              actualRouters.add(actualRoute);
          }
          // 加入自定义的过滤器
          actualRouters.addAll(customRouters);
          return new RouterChain(actualRouters, consumerBootstrap);
      }
docs: 构建Router链
  
  @param consumerBootstrap 服务端订阅者配置
  @return 路由链