feat[boot]: 支持spring boot的自动化配置

This commit is contained in:
jaysunxiao committed 2021-09-07 15:32:59 +08:00
1 parent 47be79785e
commit 44e4782641
37 files changed
+657 -219

No files matched your search

@@ -64,7 +64,7 @@ public class ConfigManager implements IConfigManager {
@Override
public void initRegistry() {
// 通过protocol,写入provider的module的id和version
var providerConfig = localConfig.getProviderConfig();
var providerConfig = localConfig.getProvider();
if (Objects.nonNull(providerConfig) && CollectionUtils.isNotEmpty(providerConfig.getModules())) {
var providerModules = new ArrayList<ProtocolModule>(providerConfig.getModules().size());
for (var providerModule : providerConfig.getModules()) {
@@ -76,7 +76,7 @@ public class ConfigManager implements IConfigManager {
}
// 通过protocol,写入consumer的module的id和version
var consumerConfig = localConfig.getConsumerConfig();
var consumerConfig = localConfig.getConsumer();
if (Objects.nonNull(consumerConfig) && CollectionUtils.isNotEmpty(consumerConfig.getModules())) {
var consumerModules = new ArrayList<ProtocolModule>(consumerConfig.getModules().size());
for (var providerModule : consumerConfig.getModules()) {
@@ -25,7 +25,7 @@ public class HostConfig {
private String center;
private String user;
private String password;
private Map<String, String> addressMap;
private Map<String, String> address;
public void setCenter(String center) {
this.center = center;
@@ -51,12 +51,12 @@ public class HostConfig {
this.password = password;
}
public Map<String, String> getAddressMap() {
return addressMap;
public Map<String, String> getAddress() {
return address;
}
public void setAddressMap(Map<String, String> addressMap) {
this.addressMap = addressMap;
public void setAddress(Map<String, String> address) {
this.address = address;
}
@Override
@@ -71,11 +71,11 @@ public class HostConfig {
return Objects.equals(center, that.center) &&
Objects.equals(user, that.user) &&
Objects.equals(password, that.password) &&
Objects.equals(addressMap, that.addressMap);
Objects.equals(address, that.address);
}
@Override
public int hashCode() {
return Objects.hash(center, user, password, addressMap);
return Objects.hash(center, user, password, address);
}
}
@@ -25,14 +25,14 @@ public class MonitorConfig {
private String center;
private String user;
private String password;
private Map<String, String> addressMap;
private Map<String, String> address;
public static MonitorConfig valueOf(String center, String user, String password, Map<String, String> addressMap) {
MonitorConfig config = new MonitorConfig();
config.center = center;
config.user = user;
config.password = password;
config.addressMap = addressMap;
config.address = addressMap;
return config;
}
@@ -60,12 +60,12 @@ public class MonitorConfig {
this.password = password;
}
public Map<String, String> getAddressMap() {
return addressMap;
public Map<String, String> getAddress() {
return address;
}
public void setAddressMap(Map<String, String> addressMap) {
this.addressMap = addressMap;
public void setAddress(Map<String, String> address) {
this.address = address;
}
@Override
@@ -80,11 +80,11 @@ public class MonitorConfig {
return Objects.equals(center, that.center) &&
Objects.equals(user, that.user) &&
Objects.equals(password, that.password) &&
Objects.equals(addressMap, that.addressMap);
Objects.equals(address, that.address);
}
@Override
public int hashCode() {
return Objects.hash(center, user, password, addressMap);
return Objects.hash(center, user, password, address);
}
}
@@ -37,16 +37,16 @@ public class NetConfig {
private boolean generateCsProtocol;
private boolean generateLuaProtocol;
private RegistryConfig registryConfig;
private MonitorConfig monitorConfig;
private HostConfig hostConfig;
private RegistryConfig registry;
private MonitorConfig monitor;
private HostConfig host;
private ProviderConfig providerConfig;
private ConsumerConfig consumerConfig;
private ProviderConfig provider;
private ConsumerConfig consumer;
public RegisterVO toLocalRegisterVO() {
return RegisterVO.valueOf(id, providerConfig, consumerConfig);
return RegisterVO.valueOf(id, provider, consumer);
}
public String getId() {
@@ -105,44 +105,44 @@ public class NetConfig {
this.generateLuaProtocol = generateLuaProtocol;
}
public RegistryConfig getRegistryConfig() {
return registryConfig;
public RegistryConfig getRegistry() {
return registry;
}
public void setRegistryConfig(RegistryConfig registryConfig) {
this.registryConfig = registryConfig;
public void setRegistry(RegistryConfig registry) {
this.registry = registry;
}
public MonitorConfig getMonitorConfig() {
return monitorConfig;
public MonitorConfig getMonitor() {
return monitor;
}
public void setMonitorConfig(MonitorConfig monitorConfig) {
this.monitorConfig = monitorConfig;
public void setMonitor(MonitorConfig monitor) {
this.monitor = monitor;
}
public HostConfig getHostConfig() {
return hostConfig;
public HostConfig getHost() {
return host;
}
public void setHostConfig(HostConfig hostConfig) {
this.hostConfig = hostConfig;
public void setHost(HostConfig host) {
this.host = host;
}
public ProviderConfig getProviderConfig() {
return providerConfig;
public ProviderConfig getProvider() {
return provider;
}
public void setProviderConfig(ProviderConfig providerConfig) {
this.providerConfig = providerConfig;
public void setProvider(ProviderConfig provider) {
this.provider = provider;
}
public ConsumerConfig getConsumerConfig() {
return consumerConfig;
public ConsumerConfig getConsumer() {
return consumer;
}
public void setConsumerConfig(ConsumerConfig consumerConfig) {
this.consumerConfig = consumerConfig;
public void setConsumer(ConsumerConfig consumer) {
this.consumer = consumer;
}
@Override
@@ -157,15 +157,15 @@ public class NetConfig {
return generateJsProtocol == netConfig.generateJsProtocol &&
Objects.equals(id, netConfig.id) &&
Objects.equals(protocolLocation, netConfig.protocolLocation) &&
Objects.equals(registryConfig, netConfig.registryConfig) &&
Objects.equals(monitorConfig, netConfig.monitorConfig) &&
Objects.equals(hostConfig, netConfig.hostConfig) &&
Objects.equals(providerConfig, netConfig.providerConfig) &&
Objects.equals(consumerConfig, netConfig.consumerConfig);
Objects.equals(registry, netConfig.registry) &&
Objects.equals(monitor, netConfig.monitor) &&
Objects.equals(host, netConfig.host) &&
Objects.equals(provider, netConfig.provider) &&
Objects.equals(consumer, netConfig.consumer);
}
@Override
public int hashCode() {
return Objects.hash(id, protocolLocation, generateJsProtocol, registryConfig, monitorConfig, hostConfig, providerConfig, consumerConfig);
return Objects.hash(id, protocolLocation, generateJsProtocol, registry, monitor, host, provider, consumer);
}
}
@@ -27,14 +27,14 @@ public class RegistryConfig {
private String center;
private String user;
private String password;
private Map<String, String> addressMap;
private Map<String, String> address;
public static RegistryConfig valueOf(String center, String user, String password, Map<String, String> addressMap) {
RegistryConfig config = new RegistryConfig();
config.center = center;
config.user = user;
config.password = password;
config.addressMap = addressMap;
config.address = addressMap;
return config;
}
@@ -70,12 +70,12 @@ public class RegistryConfig {
this.password = password;
}
public Map<String, String> getAddressMap() {
return addressMap;
public Map<String, String> getAddress() {
return address;
}
public void setAddressMap(Map<String, String> addressMap) {
this.addressMap = addressMap;
public void setAddress(Map<String, String> address) {
this.address = address;
}
@Override
@@ -90,11 +90,11 @@ public class RegistryConfig {
return Objects.equals(center, that.center) &&
Objects.equals(user, that.user) &&
Objects.equals(password, that.password) &&
Objects.equals(addressMap, that.addressMap);
Objects.equals(address, that.address);
}
@Override
public int hashCode() {
return Objects.hash(center, user, password, addressMap);
return Objects.hash(center, user, password, address);
}
}
@@ -126,7 +126,7 @@ public class ZookeeperRegistry implements IRegistry {
@Override
public void start() {
var registryConfig = NetContext.getConfigManager().getLocalConfig().getRegistryConfig();
var registryConfig = NetContext.getConfigManager().getLocalConfig().getRegistry();
if (Objects.isNull(registryConfig)) {
logger.info("服务提供者没有配置,不会在zk种注册服务,如果是单机启动请忽略这条日志");
return;
@@ -141,7 +141,7 @@ public class ZookeeperRegistry implements IRegistry {
}
private void startProvider() {
var providerConfig = NetContext.getConfigManager().getLocalConfig().getProviderConfig();
var providerConfig = NetContext.getConfigManager().getLocalConfig().getProvider();
if (Objects.isNull(providerConfig)) {
logger.info("服务提供者没有配置,不会在zk种注册服务,如果是单机启动请忽略这条日志");
@@ -153,14 +153,14 @@ public class ZookeeperRegistry implements IRegistry {
}
private void startCurator() {
var registryConfig = NetContext.getConfigManager().getLocalConfig().getRegistryConfig();
var registryConfig = NetContext.getConfigManager().getLocalConfig().getRegistry();
if (!registryConfig.getCenter().toLowerCase().matches("zookeeper")) {
throw new IllegalArgumentException(StringUtils
.format("[center:{}]注册中心只能是zookeeper", JsonUtils.object2String(registryConfig)));
}
var zookeeperConnectStr = HostAndPort.toHostAndPortListStr(HostAndPort.toHostAndPortList(registryConfig.getAddressMap().values()));
var zookeeperConnectStr = HostAndPort.toHostAndPortListStr(HostAndPort.toHostAndPortList(registryConfig.getAddress().values()));
var builder = CuratorFrameworkFactory.builder();
builder.connectString(zookeeperConnectStr);
if (registryConfig.hasZookeeperAuthor()) {
@@ -207,7 +207,7 @@ public class ZookeeperRegistry implements IRegistry {
// 创建zookeeper的根路径
var rootStat = curator.checkExists().forPath(ROOT_PATH);
if (Objects.isNull(rootStat)) {
var registryConfig = NetContext.getConfigManager().getLocalConfig().getRegistryConfig();
var registryConfig = NetContext.getConfigManager().getLocalConfig().getRegistry();
var builder = curator.create();
builder.creatingParentsIfNeeded();
if (registryConfig.hasZookeeperAuthor()) {
@@ -218,7 +218,7 @@ public class ZookeeperRegistry implements IRegistry {
builder.withMode(CreateMode.PERSISTENT);
builder.forPath(ROOT_PATH, StringUtils.bytes(registryConfig.getCenter()));
} else {
var registryConfig = NetContext.getConfigManager().getLocalConfig().getRegistryConfig();
var registryConfig = NetContext.getConfigManager().getLocalConfig().getRegistry();
var bytes = curator.getData().storingStatIn(new Stat()).forPath(ROOT_PATH);
var rootPathData = StringUtils.bytesToString(bytes);
@@ -20,7 +20,6 @@ import com.zfoo.net.consumer.service.Consumer;
import com.zfoo.net.dispatcher.manager.PacketDispatcher;
import com.zfoo.net.packet.service.PacketService;
import com.zfoo.net.session.manager.SessionManager;
import com.zfoo.protocol.ProtocolManager;
import com.zfoo.protocol.registration.ProtocolModule;
import com.zfoo.protocol.util.DomUtils;
import com.zfoo.protocol.util.StringUtils;
@@ -60,11 +59,6 @@ public class NetDefinitionParser implements BeanDefinitionParser {
builder.addPropertyReference("localConfig", NetConfig.class.getCanonicalName());
parserContext.getRegistry().registerBeanDefinition(clazz.getCanonicalName(), builder.getBeanDefinition());
// 注册ProtocolManager
clazz = ProtocolManager.class;
builder = BeanDefinitionBuilder.rootBeanDefinition(clazz);
parserContext.getRegistry().registerBeanDefinition(clazz.getCanonicalName(), builder.getBeanDefinition());
// 注册PacketService
clazz = PacketService.class;
builder = BeanDefinitionBuilder.rootBeanDefinition(clazz);
@@ -104,31 +98,31 @@ public class NetDefinitionParser implements BeanDefinitionParser {
var registryElement = DomUtils.getFirstChildElementByTagName(element, "registry");
if (registryElement != null) {
parseRegistryConfig(registryElement, parserContext);
builder.addPropertyReference("registryConfig", RegistryConfig.class.getCanonicalName());
builder.addPropertyReference("registry", RegistryConfig.class.getCanonicalName());
}
var monitorElement = DomUtils.getFirstChildElementByTagName(element, "monitor");
if (monitorElement != null) {
parseMonitorConfig(monitorElement, parserContext);
builder.addPropertyReference("monitorConfig", MonitorConfig.class.getCanonicalName());
builder.addPropertyReference("monitor", MonitorConfig.class.getCanonicalName());
}
var hostElement = DomUtils.getFirstChildElementByTagName(element, "host");
if (hostElement != null) {
builder.addPropertyReference("hostConfig", HostConfig.class.getCanonicalName());
builder.addPropertyReference("host", HostConfig.class.getCanonicalName());
parseHostConfig(hostElement, parserContext);
}
var providerElement = DomUtils.getFirstChildElementByTagName(element, "provider");
if (providerElement != null) {
builder.addPropertyReference("providerConfig", ProviderConfig.class.getCanonicalName());
builder.addPropertyReference("provider", ProviderConfig.class.getCanonicalName());
parseProviderConfig(providerElement, parserContext);
}
var consumerElement = DomUtils.getFirstChildElementByTagName(element, "consumer");
if (consumerElement != null) {
parseConsumerConfig(consumerElement, parserContext);
builder.addPropertyReference("consumerConfig", ConsumerConfig.class.getCanonicalName());
builder.addPropertyReference("consumer", ConsumerConfig.class.getCanonicalName());
}
parserContext.getRegistry().registerBeanDefinition(clazz.getCanonicalName(), builder.getBeanDefinition());
@@ -142,7 +136,7 @@ public class NetDefinitionParser implements BeanDefinitionParser {
resolvePlaceholder("user", "user", builder, element, parserContext);
resolvePlaceholder("password", "password", builder, element, parserContext);
var addressMap = parseAddress(element, parserContext);
builder.addPropertyValue("addressMap", addressMap);
builder.addPropertyValue("address", addressMap);
parserContext.getRegistry().registerBeanDefinition(clazz.getCanonicalName(), builder.getBeanDefinition());
}
@@ -154,7 +148,7 @@ public class NetDefinitionParser implements BeanDefinitionParser {
resolvePlaceholder("user", "user", builder, element, parserContext);
resolvePlaceholder("password", "password", builder, element, parserContext);
var addressMap = parseAddress(element, parserContext);
builder.addPropertyValue("addressMap", addressMap);
builder.addPropertyValue("address", addressMap);
parserContext.getRegistry().registerBeanDefinition(clazz.getCanonicalName(), builder.getBeanDefinition());
}
@@ -166,7 +160,7 @@ public class NetDefinitionParser implements BeanDefinitionParser {
resolvePlaceholder("user", "user", builder, element, parserContext);
resolvePlaceholder("password", "password", builder, element, parserContext);
var addressMap = parseAddress(element, parserContext);
builder.addPropertyValue("addressMap", addressMap);
builder.addPropertyValue("address", addressMap);
parserContext.getRegistry().registerBeanDefinition(clazz.getCanonicalName(), builder.getBeanDefinition());
}
@@ -50,7 +50,7 @@ public final class TaskManager implements ITaskManager {
static {
var localConfig = NetContext.getConfigManager().getLocalConfig();
var providerConfig = localConfig.getProviderConfig();
var providerConfig = localConfig.getProvider();
var dispatch = providerConfig == null ? "consistent-hash" : providerConfig.getDispatch();
var dispatchThread = (providerConfig == null || StringUtils.isBlank(providerConfig.getDispatchThread()))
@@ -44,7 +44,7 @@ public class TcpClientTest {
public void startClient0() {
var context = new ClassPathXmlApplicationContext("config.xml");
SessionUtils.printSessionInfo();
var client = new TcpClient(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHostConfig().getAddressMap().get("server0")));
var client = new TcpClient(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHost().getAddress().get("server0")));
var session = client.start();
var request = new TcpHelloRequest();
@@ -64,7 +64,7 @@ public class TcpClientTest {
public void syncClientTest() {
var context = new ClassPathXmlApplicationContext("config.xml");
SessionUtils.printSessionInfo();
var client = new TcpClient(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHostConfig().getAddressMap().get("server1")));
var client = new TcpClient(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHost().getAddress().get("server1")));
var session = client.start();
var executorSize = Runtime.getRuntime().availableProcessors() * 2;
@@ -93,7 +93,7 @@ public class TcpClientTest {
@Test
public void asyncClientTest() {
var context = new ClassPathXmlApplicationContext("config.xml");
var client1 = new TcpClient(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHostConfig().getAddressMap().get("server1")));
var client1 = new TcpClient(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHost().getAddress().get("server1")));
var session1 = client1.start();
var executorSize = Runtime.getRuntime().availableProcessors() * 2;
@@ -42,7 +42,7 @@ public class TcpServerTest {
var context = new ClassPathXmlApplicationContext("config.xml");
SessionUtils.printSessionInfo();
var server0 = new TcpServer(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHostConfig().getAddressMap().get("server0")));
var server0 = new TcpServer(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHost().getAddress().get("server0")));
server0.start();
ThreadUtils.sleep(Long.MAX_VALUE);
}
@@ -53,7 +53,7 @@ public class TcpServerTest {
SessionUtils.printSessionInfo();
var server1 = new TcpServer(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHostConfig().getAddressMap().get("server1")));
var server1 = new TcpServer(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHost().getAddress().get("server1")));
server1.start();
// 连接server0
@@ -61,7 +61,7 @@ public class TcpServerTest {
executor.execute(() -> {
while (true) {
try {
var client0 = new TcpClient(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHostConfig().getAddressMap().get("client0")));
var client0 = new TcpClient(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHost().getAddress().get("client0")));
client0.start();
break;
} catch (Exception e) {