From 4c92120cef74aab223f16b7ba02c41ae80ea057f Mon Sep 17 00:00:00 2001 From: luca Date: Thu, 30 May 2024 15:32:48 +0800 Subject: [PATCH] feat[net]: supports the configuration of registry driver classes --- .../java/com/zfoo/net/config/ConfigManager.java | 14 +++++++++++++- .../com/zfoo/net/config/model/RegistryConfig.java | 9 +++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/net/src/main/java/com/zfoo/net/config/ConfigManager.java b/net/src/main/java/com/zfoo/net/config/ConfigManager.java index 4b5d3a7e..e3509e0b 100644 --- a/net/src/main/java/com/zfoo/net/config/ConfigManager.java +++ b/net/src/main/java/com/zfoo/net/config/ConfigManager.java @@ -12,6 +12,7 @@ package com.zfoo.net.config; +import com.zfoo.net.NetContext; import com.zfoo.net.config.model.NetConfig; import com.zfoo.net.consumer.registry.IRegistry; import com.zfoo.net.consumer.registry.ZookeeperRegistry; @@ -82,7 +83,18 @@ public class ConfigManager implements IConfigManager { // 走到这之后,NetConfig通过app.xml(读取有哪些消费者)+protocol.xml(模块号信息)完成了初始化 // 接下来就是通过注册中心,把生产者和消费者关联起来 - registry = new ZookeeperRegistry(); + try { + var registryConfig = NetContext.getConfigManager().getLocalConfig().getRegistry(); + String driverClassName = registryConfig.getDriverClassName(); + if (driverClassName == null || driverClassName.isBlank()){ + registry = new ZookeeperRegistry(); + } else { + registry = (IRegistry) Class.forName(driverClassName).getDeclaredConstructor().newInstance(); + } + } catch (Exception e) { + throw new RuntimeException("registry instance err", e); + } + registry.start(); } diff --git a/net/src/main/java/com/zfoo/net/config/model/RegistryConfig.java b/net/src/main/java/com/zfoo/net/config/model/RegistryConfig.java index a39b903b..e0801573 100644 --- a/net/src/main/java/com/zfoo/net/config/model/RegistryConfig.java +++ b/net/src/main/java/com/zfoo/net/config/model/RegistryConfig.java @@ -28,6 +28,7 @@ public class RegistryConfig { private String user; private String password; private Map address; + private String driverClassName; public boolean hasZookeeperAuthor() { @@ -97,4 +98,12 @@ public class RegistryConfig { public int hashCode() { return Objects.hash(center, user, password, address); } + + public String getDriverClassName() { + return driverClassName; + } + + public void setDriverClassName(String driverClassName) { + this.driverClassName = driverClassName; + } }