Commit 8c3ed3ee by huangfusuper

修正注册key

parent 68ad25f0
...@@ -17,12 +17,16 @@ import org.slf4j.LoggerFactory; ...@@ -17,12 +17,16 @@ import org.slf4j.LoggerFactory;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** /**
* provider * provider
*/ */
public class RpcProviderFactory { public class RpcProviderFactory {
private static final Logger logger = LoggerFactory.getLogger(RpcProviderFactory.class); 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 ---------------------- // ---------------------- config ----------------------
...@@ -145,12 +149,13 @@ public class RpcProviderFactory { ...@@ -145,12 +149,13 @@ public class RpcProviderFactory {
if (serviceData.size() > 0) { if (serviceData.size() > 0) {
Map<String, String> keyServerAddress = new HashMap<>(16); Map<String, String> keyServerAddress = new HashMap<>(16);
for (Map.Entry<String, Object> entry : serviceData.entrySet()) { for (Map.Entry<String, Object> entry : serviceDataReg.entrySet()) {
//提供http请求的是服务的id,不包含. Matcher matcher = PATTERN_SERVER_NANE_REG.matcher(entry.getKey());
if(entry.getKey().contains(".")){ //提供http请求还是rpc服务
keyServerAddress.put(entry.getKey(), serviceAddress); if(!Boolean.parseBoolean(matcher.group(2))){
keyServerAddress.put(matcher.group(1), serviceAddress);
}else { }else {
keyServerAddress.put(entry.getKey(),httpServiceAddress); keyServerAddress.put(matcher.group(1),httpServiceAddress);
} }
} }
serviceRegistry.registry(keyServerAddress); serviceRegistry.registry(keyServerAddress);
...@@ -186,6 +191,10 @@ public class RpcProviderFactory { ...@@ -186,6 +191,10 @@ public class RpcProviderFactory {
* init local rpc service map * init local rpc service map
*/ */
private Map<String, Object> serviceData = new HashMap<>(); private Map<String, Object> serviceData = new HashMap<>();
/**
* 即将被注册的集合 和上面那个Map不一样的是他的key上携带了是否是http请求
*/
private Map<String, Object> serviceDataReg = new HashMap<>();
public Map<String, Object> getServiceData() { public Map<String, Object> getServiceData() {
return serviceData; return serviceData;
...@@ -213,9 +222,12 @@ public class RpcProviderFactory { ...@@ -213,9 +222,12 @@ public class RpcProviderFactory {
* @param version * @param version
* @param serviceBean * @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); String serviceKey = makeServiceKey(iface, version);
serviceData.put(serviceKey, serviceBean); 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()); 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 ...@@ -132,11 +132,11 @@ public class RpcSpringProviderFactory extends RpcProviderFactory implements Appl
//如果提供的是htp服务 //如果提供的是htp服务
if (rpcService.http_type()) { if (rpcService.http_type()) {
this.isHttp = true; this.isHttp = true;
super.addService(this.serverName, version, serviceBean); super.addService(this.serverName, version, serviceBean , true);
} else { } 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