in appactive-java-client/client-bridge/client-bridge-rpc-base/src/main/java/io/appactive/rpc/base/consumer/RPCAddressFilterByUnitServiceImpl.java [152:181]
private List<T> unitServers(Map<String, List<T>> unitServersMap, String servicePrimaryName,String routeId) {
if (routeId == null){
// 显示透传没有,则取隐 线程上下文
routeId = AppContextClient.getRouteId();
}
if (routeId == null) {
// 无routeId 在多活里面 直接报错,无单元化路由目标地址,
String msg = MessageFormat.format("service:{0},not have routeId",servicePrimaryName);
logger.error(msg);
throw new AppactiveException(msg);
}
String targetUnit = trafficRouteRuleService.getUnitByRouteId(routeId);
if (StringUtils.isBlank(targetUnit)) {
String msg = MessageFormat.format("service:{0},routeId:{1},targetUnit is null",servicePrimaryName,routeId);
logger.error(msg);
throw new AppactiveException(msg);
}
targetUnit = targetUnit.toUpperCase();
List<T> unitServers = unitServersMap.get(targetUnit);
if (CollectionUtils.isEmpty(unitServers)) {
/* 单元地址池没有目标单元的地址,不进行兜底*/
String msg = MessageFormat.format("service:{0},routeId:{1},targetUnit:{2},list is null",servicePrimaryName,routeId,targetUnit);
logger.error(msg);
throw new AppactiveException(msg);
}
return unitServers;
}