Commit 7fec4882 by Nepxion

重构类结构

parent 1a950681
...@@ -23,7 +23,6 @@ import org.apache.commons.lang3.StringUtils; ...@@ -23,7 +23,6 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.client.serviceregistry.Registration;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -49,9 +48,6 @@ public class RouterEndpoint { ...@@ -49,9 +48,6 @@ public class RouterEndpoint {
@Autowired @Autowired
private DiscoveryClient discoveryClient; private DiscoveryClient discoveryClient;
@Autowired
private Registration registration;
@RequestMapping(path = "/router/services", method = RequestMethod.GET) @RequestMapping(path = "/router/services", method = RequestMethod.GET)
@ApiOperation(value = "获取服务注册中心的服务列表", notes = "", response = List.class, httpMethod = "GET") @ApiOperation(value = "获取服务注册中心的服务列表", notes = "", response = List.class, httpMethod = "GET")
public List<String> services() { public List<String> services() {
...@@ -99,8 +95,8 @@ public class RouterEndpoint { ...@@ -99,8 +95,8 @@ public class RouterEndpoint {
public RouterEntity getRouterEntity() { public RouterEntity getRouterEntity() {
String serviceId = pluginAdapter.getServiceId(); String serviceId = pluginAdapter.getServiceId();
String version = pluginAdapter.getVersion(); String version = pluginAdapter.getVersion();
String host = pluginAdapter.getHost(registration); String host = pluginAdapter.getHost();
int port = pluginAdapter.getPort(registration); int port = pluginAdapter.getPort();
RouterEntity routerEntity = new RouterEntity(); RouterEntity routerEntity = new RouterEntity();
routerEntity.setServiceId(serviceId); routerEntity.setServiceId(serviceId);
......
...@@ -11,74 +11,14 @@ package com.nepxion.discovery.plugin.framework.adapter; ...@@ -11,74 +11,14 @@ package com.nepxion.discovery.plugin.framework.adapter;
import java.util.Map; import java.util.Map;
import javax.annotation.PostConstruct;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.cloud.client.serviceregistry.Registration;
import org.springframework.cloud.consul.discovery.ConsulServer; import org.springframework.cloud.consul.discovery.ConsulServer;
import com.nepxion.discovery.plugin.framework.constant.ConsulConstant;
import com.nepxion.discovery.plugin.framework.constant.PluginConstant;
import com.nepxion.discovery.plugin.framework.exception.PluginException; import com.nepxion.discovery.plugin.framework.exception.PluginException;
import com.netflix.loadbalancer.Server; import com.netflix.loadbalancer.Server;
public class ConsulAdapter extends AbstractPluginAdapter { public class ConsulAdapter extends AbstractPluginAdapter {
private String version;
@PostConstruct
private void initialize() {
String value = pluginContextAware.getEnvironment().getProperty(ConsulConstant.METADATA_VERSION);
if (StringUtils.isEmpty(value)) {
return;
}
String[] valueArray = StringUtils.split(value, ",");
if (ArrayUtils.isEmpty(valueArray)) {
return;
}
for (String text : valueArray) {
String[] textArray = StringUtils.split(text.trim(), "=");
if (textArray.length != 2) {
throw new PluginException("Invalid tags config for consul");
}
if (StringUtils.equals(textArray[0].trim(), PluginConstant.VERSION)) {
version = textArray[1].trim();
return;
}
}
}
@Override
public String getHost(Registration registration) {
/*if (registration instanceof ConsulRegistration) {
ConsulRegistration consulRegistration = (ConsulRegistration) registration;
return consulRegistration.getService().getAddress();
}
throw new PluginException("Registration instance isn't the type of ConsulRegistration");*/
return registration.getHost();
}
@Override @Override
public int getPort(Registration registration) { public Map<String, String> getServerMetaData(Server server) {
/*if (registration instanceof ConsulRegistration) {
ConsulRegistration consulRegistration = (ConsulRegistration) registration;
return consulRegistration.getService().getPort();
}
throw new PluginException("Registration instance isn't the type of ConsulRegistration");*/
return registration.getPort();
}
@Override
public Map<String, String> getMetaData(Server server) {
if (server instanceof ConsulServer) { if (server instanceof ConsulServer) {
ConsulServer consulServer = (ConsulServer) server; ConsulServer consulServer = (ConsulServer) server;
...@@ -87,14 +27,4 @@ public class ConsulAdapter extends AbstractPluginAdapter { ...@@ -87,14 +27,4 @@ public class ConsulAdapter extends AbstractPluginAdapter {
throw new PluginException("Server instance isn't the type of ConsulServer"); throw new PluginException("Server instance isn't the type of ConsulServer");
} }
@Override
public String getServerVersion(Server server) {
return getMetaData(server).get(PluginConstant.VERSION);
}
@Override
public String getLocalVersion() {
return version;
}
} }
\ No newline at end of file
...@@ -10,7 +10,5 @@ package com.nepxion.discovery.plugin.framework.constant; ...@@ -10,7 +10,5 @@ package com.nepxion.discovery.plugin.framework.constant;
*/ */
public class ConsulConstant { public class ConsulConstant {
public static final String METADATA_VERSION = "spring.cloud.consul.discovery.tags";
public static final String DISCOVERY_PLUGIN = "Consul Plugin"; public static final String DISCOVERY_PLUGIN = "Consul Plugin";
} }
\ No newline at end of file
...@@ -11,47 +11,13 @@ package com.nepxion.discovery.plugin.framework.adapter; ...@@ -11,47 +11,13 @@ package com.nepxion.discovery.plugin.framework.adapter;
import java.util.Map; import java.util.Map;
import org.springframework.cloud.client.serviceregistry.Registration;
import com.nepxion.discovery.plugin.framework.constant.EurekaConstant;
import com.nepxion.discovery.plugin.framework.constant.PluginConstant;
import com.nepxion.discovery.plugin.framework.exception.PluginException; import com.nepxion.discovery.plugin.framework.exception.PluginException;
import com.netflix.loadbalancer.Server; import com.netflix.loadbalancer.Server;
import com.netflix.niws.loadbalancer.DiscoveryEnabledServer; import com.netflix.niws.loadbalancer.DiscoveryEnabledServer;
public class EurekaAdapter extends AbstractPluginAdapter { public class EurekaAdapter extends AbstractPluginAdapter {
@Override @Override
public String getHost(Registration registration) { public Map<String, String> getServerMetaData(Server server) {
/*if (registration instanceof EurekaRegistration) {
EurekaRegistration eurekaRegistration = (EurekaRegistration) registration;
return eurekaRegistration.getInstanceConfig().getIpAddress();
}
throw new PluginException("Registration instance isn't the type of EurekaRegistration");*/
return registration.getHost();
}
@Override
public int getPort(Registration registration) {
/*if (registration instanceof EurekaRegistration) {
EurekaRegistration eurekaRegistration = (EurekaRegistration) registration;
if (eurekaRegistration.getInstanceConfig().getSecurePortEnabled()) {
return eurekaRegistration.getInstanceConfig().getSecurePort();
}
return eurekaRegistration.getInstanceConfig().getNonSecurePort();
}
throw new PluginException("Registration instance isn't the type of EurekaRegistration");*/
return registration.getPort();
}
@Override
public Map<String, String> getMetaData(Server server) {
if (server instanceof DiscoveryEnabledServer) { if (server instanceof DiscoveryEnabledServer) {
DiscoveryEnabledServer discoveryEnabledServer = (DiscoveryEnabledServer) server; DiscoveryEnabledServer discoveryEnabledServer = (DiscoveryEnabledServer) server;
...@@ -60,14 +26,4 @@ public class EurekaAdapter extends AbstractPluginAdapter { ...@@ -60,14 +26,4 @@ public class EurekaAdapter extends AbstractPluginAdapter {
throw new PluginException("Server instance isn't the type of DiscoveryEnabledServer"); throw new PluginException("Server instance isn't the type of DiscoveryEnabledServer");
} }
@Override
public String getServerVersion(Server server) {
return getMetaData(server).get(PluginConstant.VERSION);
}
@Override
public String getLocalVersion() {
return pluginContextAware.getEnvironment().getProperty(EurekaConstant.METADATA_VERSION);
}
} }
\ No newline at end of file
...@@ -10,7 +10,5 @@ package com.nepxion.discovery.plugin.framework.constant; ...@@ -10,7 +10,5 @@ package com.nepxion.discovery.plugin.framework.constant;
*/ */
public class EurekaConstant { public class EurekaConstant {
public static final String METADATA_VERSION = "eureka.instance.metadataMap.version";
public static final String DISCOVERY_PLUGIN = "Eureka Plugin"; public static final String DISCOVERY_PLUGIN = "Eureka Plugin";
} }
\ No newline at end of file
...@@ -11,43 +11,14 @@ package com.nepxion.discovery.plugin.framework.adapter; ...@@ -11,43 +11,14 @@ package com.nepxion.discovery.plugin.framework.adapter;
import java.util.Map; import java.util.Map;
import org.springframework.cloud.client.serviceregistry.Registration;
import org.springframework.cloud.zookeeper.discovery.ZookeeperServer; import org.springframework.cloud.zookeeper.discovery.ZookeeperServer;
import com.nepxion.discovery.plugin.framework.constant.PluginConstant;
import com.nepxion.discovery.plugin.framework.constant.ZookeeperConstant;
import com.nepxion.discovery.plugin.framework.exception.PluginException; import com.nepxion.discovery.plugin.framework.exception.PluginException;
import com.netflix.loadbalancer.Server; import com.netflix.loadbalancer.Server;
public class ZookeeperAdapter extends AbstractPluginAdapter { public class ZookeeperAdapter extends AbstractPluginAdapter {
@Override @Override
public String getHost(Registration registration) { public Map<String, String> getServerMetaData(Server server) {
/*if (registration instanceof ZookeeperRegistration) {
ZookeeperRegistration zookeeperRegistration = (ZookeeperRegistration) registration;
return zookeeperRegistration.getServiceInstance().getAddress();
}
throw new PluginException("Registration instance isn't the type of ZookeeperRegistration");*/
return registration.getHost();
}
@Override
public int getPort(Registration registration) {
/*if (registration instanceof ZookeeperRegistration) {
ZookeeperRegistration zookeeperRegistration = (ZookeeperRegistration) registration;
return zookeeperRegistration.getServiceInstance().getPort();
}
throw new PluginException("Registration instance isn't the type of ZookeeperRegistration");*/
return registration.getPort();
}
@Override
public Map<String, String> getMetaData(Server server) {
if (server instanceof ZookeeperServer) { if (server instanceof ZookeeperServer) {
ZookeeperServer zookeeperServer = (ZookeeperServer) server; ZookeeperServer zookeeperServer = (ZookeeperServer) server;
...@@ -56,14 +27,4 @@ public class ZookeeperAdapter extends AbstractPluginAdapter { ...@@ -56,14 +27,4 @@ public class ZookeeperAdapter extends AbstractPluginAdapter {
throw new PluginException("Server instance isn't the type of ZookeeperServer"); throw new PluginException("Server instance isn't the type of ZookeeperServer");
} }
@Override
public String getServerVersion(Server server) {
return getMetaData(server).get(PluginConstant.VERSION);
}
@Override
public String getLocalVersion() {
return pluginContextAware.getEnvironment().getProperty(ZookeeperConstant.METADATA_VERSION);
}
} }
\ No newline at end of file
...@@ -10,7 +10,5 @@ package com.nepxion.discovery.plugin.framework.constant; ...@@ -10,7 +10,5 @@ package com.nepxion.discovery.plugin.framework.constant;
*/ */
public class ZookeeperConstant { public class ZookeeperConstant {
public static final String METADATA_VERSION = "spring.cloud.zookeeper.discovery.metadata.version";
public static final String DISCOVERY_PLUGIN = "Zookeeper Plugin"; public static final String DISCOVERY_PLUGIN = "Zookeeper Plugin";
} }
\ No newline at end of file
...@@ -9,17 +9,24 @@ package com.nepxion.discovery.plugin.framework.adapter; ...@@ -9,17 +9,24 @@ package com.nepxion.discovery.plugin.framework.adapter;
* @version 1.0 * @version 1.0
*/ */
import java.util.Map;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.serviceregistry.Registration;
import com.nepxion.discovery.plugin.framework.cache.PluginCache; import com.nepxion.discovery.plugin.framework.cache.PluginCache;
import com.nepxion.discovery.plugin.framework.cache.RuleCache; import com.nepxion.discovery.plugin.framework.cache.RuleCache;
import com.nepxion.discovery.plugin.framework.constant.PluginConstant; import com.nepxion.discovery.plugin.framework.constant.PluginConstant;
import com.nepxion.discovery.plugin.framework.context.PluginContextAware; import com.nepxion.discovery.plugin.framework.context.PluginContextAware;
import com.nepxion.discovery.plugin.framework.entity.RuleEntity; import com.nepxion.discovery.plugin.framework.entity.RuleEntity;
import com.netflix.loadbalancer.Server;
public abstract class AbstractPluginAdapter implements PluginAdapter { public abstract class AbstractPluginAdapter implements PluginAdapter {
@Autowired @Autowired
private Registration registration;
@Autowired
protected PluginContextAware pluginContextAware; protected PluginContextAware pluginContextAware;
@Autowired @Autowired
...@@ -30,7 +37,22 @@ public abstract class AbstractPluginAdapter implements PluginAdapter { ...@@ -30,7 +37,22 @@ public abstract class AbstractPluginAdapter implements PluginAdapter {
@Override @Override
public String getServiceId() { public String getServiceId() {
return pluginContextAware.getEnvironment().getProperty(PluginConstant.SPRING_APPLICATION_NAME); return registration.getServiceId();
}
@Override
public String getHost() {
return registration.getHost();
}
@Override
public int getPort() {
return registration.getPort();
}
@Override
public Map<String, String> getMetaData() {
return registration.getMetadata();
} }
@Override @Override
...@@ -44,6 +66,11 @@ public abstract class AbstractPluginAdapter implements PluginAdapter { ...@@ -44,6 +66,11 @@ public abstract class AbstractPluginAdapter implements PluginAdapter {
} }
@Override @Override
public String getLocalVersion() {
return getMetaData().get(PluginConstant.VERSION);
}
@Override
public String getDynamicVersion() { public String getDynamicVersion() {
return pluginCache.get(PluginConstant.DYNAMIC_VERSION); return pluginCache.get(PluginConstant.DYNAMIC_VERSION);
} }
...@@ -92,4 +119,9 @@ public abstract class AbstractPluginAdapter implements PluginAdapter { ...@@ -92,4 +119,9 @@ public abstract class AbstractPluginAdapter implements PluginAdapter {
public void clearDynamicRule() { public void clearDynamicRule() {
ruleCache.clear(PluginConstant.DYNAMIC_RULE); ruleCache.clear(PluginConstant.DYNAMIC_RULE);
} }
@Override
public String getServerVersion(Server server) {
return getServerMetaData(server).get(PluginConstant.VERSION);
}
} }
\ No newline at end of file
...@@ -11,21 +11,17 @@ package com.nepxion.discovery.plugin.framework.adapter; ...@@ -11,21 +11,17 @@ package com.nepxion.discovery.plugin.framework.adapter;
import java.util.Map; import java.util.Map;
import org.springframework.cloud.client.serviceregistry.Registration;
import com.nepxion.discovery.plugin.framework.entity.RuleEntity; import com.nepxion.discovery.plugin.framework.entity.RuleEntity;
import com.netflix.loadbalancer.Server; import com.netflix.loadbalancer.Server;
public interface PluginAdapter { public interface PluginAdapter {
String getServiceId(); String getServiceId();
String getHost(Registration registration); String getHost();
int getPort(Registration registration);
Map<String, String> getMetaData(Server server); int getPort();
String getServerVersion(Server server); Map<String, String> getMetaData();
String getVersion(); String getVersion();
...@@ -48,4 +44,8 @@ public interface PluginAdapter { ...@@ -48,4 +44,8 @@ public interface PluginAdapter {
void setDynamicRule(RuleEntity ruleEntity); void setDynamicRule(RuleEntity ruleEntity);
void clearDynamicRule(); void clearDynamicRule();
Map<String, String> getServerMetaData(Server server);
String getServerVersion(Server server);
} }
\ No newline at end of file
...@@ -29,8 +29,8 @@ public class CountFilterRegisterListener extends AbstractRegisterListener { ...@@ -29,8 +29,8 @@ public class CountFilterRegisterListener extends AbstractRegisterListener {
@Override @Override
public void onRegister(Registration registration) { public void onRegister(Registration registration) {
String serviceId = registration.getServiceId(); String serviceId = registration.getServiceId();
String host = pluginAdapter.getHost(registration); String host = registration.getHost();
int port = pluginAdapter.getPort(registration); int port = registration.getPort();
applyCountFilter(serviceId, host, port); applyCountFilter(serviceId, host, port);
} }
......
...@@ -27,8 +27,8 @@ public class HostFilterRegisterListener extends AbstractRegisterListener { ...@@ -27,8 +27,8 @@ public class HostFilterRegisterListener extends AbstractRegisterListener {
@Override @Override
public void onRegister(Registration registration) { public void onRegister(Registration registration) {
String serviceId = registration.getServiceId(); String serviceId = registration.getServiceId();
String host = pluginAdapter.getHost(registration); String host = registration.getHost();
int port = pluginAdapter.getPort(registration); int port = registration.getPort();
applyHostFilter(serviceId, host, port); applyHostFilter(serviceId, host, port);
} }
......
...@@ -10,21 +10,18 @@ package com.nepxion.discovery.plugin.example.feign; ...@@ -10,21 +10,18 @@ package com.nepxion.discovery.plugin.example.feign;
*/ */
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.ConfigurableEnvironment;
import com.nepxion.discovery.plugin.framework.adapter.PluginAdapter; import com.nepxion.discovery.plugin.framework.adapter.PluginAdapter;
import com.nepxion.discovery.plugin.framework.constant.PluginConstant;
public class AbstractFeignImpl { public class AbstractFeignImpl {
@Autowired @Autowired
protected ConfigurableEnvironment environment;
@Autowired
private PluginAdapter pluginAdapter; private PluginAdapter pluginAdapter;
public String doInvoke(String value) { public String doInvoke(String value) {
String serviceId = environment.getProperty(PluginConstant.SPRING_APPLICATION_NAME); String serviceId = pluginAdapter.getServiceId();
String version = pluginAdapter.getVersion(); String version = pluginAdapter.getVersion();
// String host = pluginAdapter.getHost();
// int port = pluginAdapter.getPort();
return value + " -> " + serviceId + "[" + version + "]"; return value + " -> " + serviceId + "[" + version + "]";
} }
......
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