springBoot动态获取dubbo的register

前言

网上有很多SpringBoot与dubbo的配置,不过多是静态写死address地址的。如何动态从配置中心获取address配置?本篇文章可能会帮到你

静态address配置方式

静态dubbo的配置方式有很多。比如application.properties的配置方式:

dubbo.registry.id=cms
dubbo.registry.protocol=zookeeper
dubbo.registry.address=192.168.222.107

这种方式也是网上文章最常见的配置方式。
如果address地址是动态从配置中心获取呢?

动态address配置方式

1. 从配置中心拉去配置

@Configuration
@Slf4j
public class CCmsRegister {
    public CCmsRegister(){
        log.info("-----------ccmsRegister");
        CcmsIndependent.add(this);
    }

    @CcmsMapper(group="dubbo-conf",name="cms.zk")
    public static String cms;

上面代码是我自己公司项目获取动态配置的方式。 你们可以根据自己的具体情况调整从配置中心获取配置的方式。

@CcmsMapper是我公司自己的注解,目的是从配置中心拉取对应的配置。

请根据自己的情况把该类调整成自己获取配置中心配置的代码。 但是要保证有成员变量,注意成员变量的名字,后面会根据变量名来注册对应id的dubbo-register。(是不是静态都无所谓)

2.根据拉取的配置动态加载dubbo-register

@Configuration
public class DubboConfig {
    @Autowired
    private CCmsRegister cCmsRegister;

    public DubboConfig(){
        registryConfig();
    }
    public void registryConfig() {
        Field[] fields = CCmsRegister.class.getFields();
        List<RegistryConfig> list = new ArrayList<>();
        try {
            for(Field field: fields){
                RegistryConfig registryConfig = new RegistryConfig((String)field.get(cCmsRegister),"zookeeper");
                registryConfig.setId(field.getName());
                list.add(registryConfig);
            }
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        ConfigManager.getInstance().addRegistries(list);
    }
}

上面代码的目的是:
1. 反射出配置类的成员变量信息
2. 循环配置类的成员变量,生成对应的RegistryConfig,Id为成员变量名。
3. 将生成的RegistryConfig集合注册。

用bean的方式动态注册register

@Configuration
public class DubboConfig {
    @Bean(name = "cms")
    public RegistryConfig registryConfig() {
        RegistryConfig reg = new RegistryConfig(CCmsRegister.cms,"zookeeper");
        return reg;
    }
}

这种是使用bean的方式注册,不过缺点很明显。如果你的应用要注册多个dubbo-register,就要写多个类似的bean。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容