mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-10-14 18:19:28 +00:00
feat[boot]: 支持spring boot的自动化配置
This commit is contained in:
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) {
|
||||
|
||||
Reference in new issue
Block a user