mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-08-11 21:57:56 +08:00
3.0.1
This commit is contained in:
@@ -34,7 +34,7 @@
|
||||
<groupId>com.gitee.sop</groupId>
|
||||
<artifactId>sop-bridge-gateway</artifactId>
|
||||
<!--<artifactId>sop-bridge-zuul</artifactId>-->
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<version>3.0.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@@ -7,6 +7,7 @@ import com.gitee.sop.gatewaycommon.bean.ConfigLimitDto;
|
||||
import com.gitee.sop.gatewaycommon.manager.DefaultLimitConfigManager;
|
||||
import com.gitee.sop.gatewaycommon.util.MyBeanUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -26,8 +27,11 @@ public class DbLimitConfigManager extends DefaultLimitConfigManager {
|
||||
Environment environment;
|
||||
|
||||
@Override
|
||||
public void load() {
|
||||
public void load(String serviceId) {
|
||||
Query query = new Query();
|
||||
if (StringUtils.isNotBlank(serviceId)) {
|
||||
query.eq("service_id", serviceId);
|
||||
}
|
||||
configLimitMapper.list(query)
|
||||
.forEach(this::putVal);
|
||||
|
||||
@@ -45,7 +49,7 @@ public class DbLimitConfigManager extends DefaultLimitConfigManager {
|
||||
switch (channelMsg.getOperation()) {
|
||||
case "reload":
|
||||
log.info("重新加载限流配置信息,configLimitDto:{}", configLimitDto);
|
||||
load();
|
||||
load(configLimitDto.getServiceId());
|
||||
break;
|
||||
case "update":
|
||||
log.info("更新限流配置信息,configLimitDto:{}", configLimitDto);
|
||||
|
@@ -1,20 +1,18 @@
|
||||
package com.gitee.sop.gateway.manager;
|
||||
|
||||
import com.gitee.fastmybatis.core.query.Query;
|
||||
import com.gitee.sop.gateway.mapper.ConfigRouteBaseMapper;
|
||||
import com.gitee.sop.gateway.mapper.ConfigRouteLimitMapper;
|
||||
import com.gitee.sop.gateway.mapper.ConfigRouteMapper;
|
||||
import com.gitee.sop.gatewaycommon.bean.ChannelMsg;
|
||||
import com.gitee.sop.gatewaycommon.bean.RouteConfig;
|
||||
import com.gitee.sop.gatewaycommon.bean.RouteDefinition;
|
||||
import com.gitee.sop.gatewaycommon.bean.TargetRoute;
|
||||
import com.gitee.sop.gatewaycommon.manager.DefaultRouteConfigManager;
|
||||
import com.gitee.sop.gatewaycommon.manager.RouteRepositoryContext;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author tanghc
|
||||
@@ -29,38 +27,17 @@ public class DbRouteConfigManager extends DefaultRouteConfigManager {
|
||||
@Autowired
|
||||
ConfigRouteLimitMapper configRouteLimitMapper;
|
||||
|
||||
@Autowired
|
||||
ConfigRouteMapper configRouteMapper;
|
||||
|
||||
@Autowired
|
||||
Environment environment;
|
||||
|
||||
@Override
|
||||
public void load() {
|
||||
loadAllRoute();
|
||||
|
||||
Query query = new Query();
|
||||
configRouteBaseMapper.list(query)
|
||||
.forEach(configRouteBase -> {
|
||||
String key = configRouteBase.getRouteId();
|
||||
putVal(key, configRouteBase);
|
||||
});
|
||||
}
|
||||
|
||||
protected void loadAllRoute() {
|
||||
Collection<? extends TargetRoute> targetRoutes = RouteRepositoryContext.getRouteRepository().getAll();
|
||||
targetRoutes.forEach(targetRoute -> {
|
||||
RouteDefinition routeDefinition = targetRoute.getRouteDefinition();
|
||||
initRouteConfig(routeDefinition);
|
||||
});
|
||||
}
|
||||
|
||||
protected void initRouteConfig(RouteDefinition routeDefinition) {
|
||||
String routeId = routeDefinition.getId();
|
||||
RouteConfig routeConfig = newRouteConfig();
|
||||
routeConfig.setRouteId(routeId);
|
||||
routeConfigMap.put(routeId, routeConfig);
|
||||
}
|
||||
|
||||
protected void putVal(String routeId, Object object) {
|
||||
this.doUpdate(routeId, object);
|
||||
public void load(String serviceId) {
|
||||
List<RouteConfig> routeConfigs = StringUtils.isBlank(serviceId) ? configRouteMapper.listAllRouteConfig()
|
||||
: configRouteMapper.listRouteConfig(serviceId);
|
||||
routeConfigs.forEach(this::save);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -69,7 +46,7 @@ public class DbRouteConfigManager extends DefaultRouteConfigManager {
|
||||
switch (channelMsg.getOperation()) {
|
||||
case "reload":
|
||||
log.info("重新加载路由配置信息,routeConfigDto:{}", routeConfig);
|
||||
load();
|
||||
load(null);
|
||||
break;
|
||||
case "update":
|
||||
log.info("更新路由配置信息,routeConfigDto:{}", routeConfig);
|
||||
|
@@ -4,15 +4,19 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.gitee.fastmybatis.core.query.Query;
|
||||
import com.gitee.sop.gateway.entity.ConfigServiceRoute;
|
||||
import com.gitee.sop.gateway.mapper.ConfigServiceRouteMapper;
|
||||
import com.gitee.sop.gatewaycommon.bean.BeanInitializer;
|
||||
import com.gitee.sop.gatewaycommon.bean.InstanceDefinition;
|
||||
import com.gitee.sop.gatewaycommon.bean.ServiceBeanInitializer;
|
||||
import com.gitee.sop.gatewaycommon.bean.ServiceRouteInfo;
|
||||
import com.gitee.sop.gatewaycommon.route.RoutesProcessor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -25,6 +29,9 @@ public class DbRoutesProcessor implements RoutesProcessor {
|
||||
@Autowired
|
||||
private ConfigServiceRouteMapper configServiceRouteMapper;
|
||||
|
||||
@Autowired
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
@Override
|
||||
public void removeAllRoutes(String serviceId) {
|
||||
// 删除serviceId下所有的路由
|
||||
@@ -65,6 +72,13 @@ public class DbRoutesProcessor implements RoutesProcessor {
|
||||
if (CollectionUtils.isNotEmpty(configServiceRoutes)) {
|
||||
// 批量保存
|
||||
configServiceRouteMapper.saveBatch(configServiceRoutes);
|
||||
// 后续处理操作
|
||||
this.initServiceBeanInitializer(serviceId);
|
||||
}
|
||||
}
|
||||
|
||||
private void initServiceBeanInitializer(String serviceId) {
|
||||
Map<String, ServiceBeanInitializer> serviceBeanInitializerMap = applicationContext.getBeansOfType(ServiceBeanInitializer.class);
|
||||
serviceBeanInitializerMap.values().forEach(serviceBeanInitializer -> serviceBeanInitializer.load(serviceId));
|
||||
}
|
||||
}
|
||||
|
@@ -8,4 +8,5 @@ import com.gitee.sop.gateway.entity.ConfigRouteBase;
|
||||
* @author tanghc
|
||||
*/
|
||||
public interface ConfigRouteBaseMapper extends CrudMapper<ConfigRouteBase, Long> {
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,27 @@
|
||||
package com.gitee.sop.gateway.mapper;
|
||||
|
||||
import com.gitee.sop.gatewaycommon.bean.RouteConfig;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author tanghc
|
||||
*/
|
||||
@Mapper
|
||||
public interface ConfigRouteMapper {
|
||||
|
||||
@Select("SELECT t.id AS routeId, t2.status " +
|
||||
"FROM config_service_route t " +
|
||||
"LEFT JOIN config_route_base t2 ON t.id=t2.route_id " +
|
||||
"WHERE t.service_id=#{serviceId}")
|
||||
List<RouteConfig> listRouteConfig(@Param("serviceId") String serviceId);
|
||||
|
||||
@Select("SELECT t.id AS routeId, t2.status " +
|
||||
"FROM config_service_route t " +
|
||||
"LEFT JOIN config_route_base t2 ON t.id=t2.route_id ")
|
||||
List<RouteConfig> listAllRouteConfig();
|
||||
|
||||
}
|
Reference in New Issue
Block a user