Commit 8c3ed3ee by huangfusuper

修正注册key

parent 68ad25f0
......@@ -17,12 +17,16 @@ import org.slf4j.LoggerFactory;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* provider
*/
public class RpcProviderFactory {
private static final Logger logger = LoggerFactory.getLogger(RpcProviderFactory.class);
public static final String SERVER_NANE_REG = "(.*)\\[(.*)\\]";
public static final Pattern PATTERN_SERVER_NANE_REG = Pattern.compile(SERVER_NANE_REG);
// ---------------------- config ----------------------
......@@ -145,12 +149,13 @@ public class RpcProviderFactory {
if (serviceData.size() > 0) {
Map<String, String> keyServerAddress = new HashMap<>(16);
for (Map.Entry<String, Object> entry : serviceData.entrySet()) {
//提供http请求的是服务的id,不包含.
if(entry.getKey().contains(".")){
keyServerAddress.put(entry.getKey(), serviceAddress);
for (Map.Entry<String, Object> entry : serviceDataReg.entrySet()) {
Matcher matcher = PATTERN_SERVER_NANE_REG.matcher(entry.getKey());
//提供http请求还是rpc服务
if(!Boolean.parseBoolean(matcher.group(2))){
keyServerAddress.put(matcher.group(1), serviceAddress);
}else {
keyServerAddress.put(entry.getKey(),httpServiceAddress);
keyServerAddress.put(matcher.group(1),httpServiceAddress);
}
}
serviceRegistry.registry(keyServerAddress);
......@@ -186,6 +191,10 @@ public class RpcProviderFactory {
* init local rpc service map
*/
private Map<String, Object> serviceData = new HashMap<>();
/**
* 即将被注册的集合 和上面那个Map不一样的是他的key上携带了是否是http请求
*/
private Map<String, Object> serviceDataReg = new HashMap<>();
public Map<String, Object> getServiceData() {
return serviceData;
......@@ -213,9 +222,12 @@ public class RpcProviderFactory {
* @param version
* @param serviceBean
*/
public void addService(String iface, String version, Object serviceBean) {
public void addService(String iface, String version, Object serviceBean, boolean isHttp) {
String serviceKey = makeServiceKey(iface, version);
serviceData.put(serviceKey, serviceBean);
//需要被注册的服务id
String regServiceKey = String.format("%s[%s]",serviceKey, isHttp);
serviceDataReg.put(regServiceKey,serviceBean);
logger.info(">>>>>>>>>>> myth-rpc, provider factory add service success. serviceKey = {}, serviceBean = {}", serviceKey, serviceBean.getClass());
}
......
......@@ -132,11 +132,11 @@ public class RpcSpringProviderFactory extends RpcProviderFactory implements Appl
//如果提供的是htp服务
if (rpcService.http_type()) {
this.isHttp = true;
super.addService(this.serverName, version, serviceBean);
super.addService(this.serverName, version, serviceBean , true);
} else {
super.addService(serverName, version, serviceBean);
super.addService(serverName, version, serviceBean, false);
}
//回复map的放置规则
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment