从dubbo zookeeper注册地址提取出zookeeper地址的方法

 更新时间:2018年12月25日 08:36:05   作者:isea533  
今天小编就为大家分享一篇关于从dubbo zookeeper注册地址提取出zookeeper地址的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

用途

项目中使用了 dubbo,注册中心使用的 zookeeper,使用 zookeeper 实现了一个简单的分布式锁(依赖 curator),因为配置文件存在 dubbo.registry 配置,为了直接使用这个地址来创建分布式锁,写了一个简单的方法来提取 zookeeper 地址。

效果

dubbo.registry 有多种配置方式,支持所有情况,下面是常见的例子和提取结果:

zookeeper://localhost:2181
zookeeper://localhost:2181?client=zkclient
zookeeper://localhost:2181?backup=localhost:2182,localhost:2183
zookeeper://localhost:2181?client=zkclient&backup=localhost:2182,localhost:2183
------------结果------------
Optional[localhost:2181]
Optional[localhost:2181]
Optional[localhost:2181,localhost:2182,localhost:2182]
Optional[localhost:2181,localhost:2183,localhost:2183]

代码

import java.util.Optional;
public class ZookeeperURL {
  public static final String PREFIX = "zookeeper://";
  public static final String BACKUP = "backup=";
  public static Optional<String> convertDubboRegistryToZookeeperURL(String dubboRegistry){
    StringBuilder zookeeperURL = new StringBuilder();
    if(dubboRegistry != null && dubboRegistry.startsWith(PREFIX)){
      dubboRegistry = dubboRegistry.substring(PREFIX.length());
      int index = dubboRegistry.indexOf("?");
      if(index > 0){
        zookeeperURL.append(dubboRegistry.substring(0, index));
        dubboRegistry = dubboRegistry.substring(index + 1);
        String[] dubboRegistries = dubboRegistry.split("&");
        for (int i = 0; i < dubboRegistries.length; i++) {
          if(dubboRegistries[i].startsWith(BACKUP)){
            String[] backups = dubboRegistries[i].substring(BACKUP.length()).split(",");
            for (int j = 0; j < backups.length; j++) {
              zookeeperURL.append(",").append(backups[i]);
            }
          }
        }
      } else {
        zookeeperURL.append(dubboRegistry);
      }
      return Optional.of(zookeeperURL.toString());
    }
    return Optional.empty();
  }
  public static void main(String[] args) {
    System.out.println(convertDubboRegistryToZookeeperURL("zookeeper://localhost:2181"));
    System.out.println(convertDubboRegistryToZookeeperURL("zookeeper://localhost:2181?client=zkclient"));
    System.out.println(convertDubboRegistryToZookeeperURL("zookeeper://localhost:2181?backup=localhost:2182,localhost:2183"));
    System.out.println(convertDubboRegistryToZookeeperURL("zookeeper://localhost:2181?client=zkclient&backup=localhost:2182,localhost:2183"));
  }
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • java+mysql实现登录和注册功能

    java+mysql实现登录和注册功能

    这篇文章主要为大家详细介绍了java+mysql实现登录和注册功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 使用IDEA开发配置Java Web的初始化过程

    使用IDEA开发配置Java Web的初始化过程

    该教程使用idea开发工具初始化javaweb项目,该运行在tomcat服务器上通过配置项目环境变量保证tomcat正常启动,具体操作配置教程参考下本文
    2021-06-06
  • java类加载机制、类加载器、自定义类加载器的案例

    java类加载机制、类加载器、自定义类加载器的案例

    这篇文章主要介绍了java类加载机制、类加载器、自定义类加载器的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Java实现读取TXT和CSV文件内容

    Java实现读取TXT和CSV文件内容

    这篇文章主要为大家详细介绍了如何利用Java语言实现读取TXT和CSV文件内容的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-02-02
  • JSON序列化Redis读取出错问题解决方案

    JSON序列化Redis读取出错问题解决方案

    这篇文章主要介绍了JSON序列化Redis读取出错问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • ssm实现分页查询的实例

    ssm实现分页查询的实例

    下面小编就为大家带来一篇ssm实现分页查询的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Mybatis之通用Mapper动态表名及其原理分析

    Mybatis之通用Mapper动态表名及其原理分析

    这篇文章主要介绍了Mybatis之通用Mapper动态表名及其原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • SpringBoot自动装配之@Enable深入讲解

    SpringBoot自动装配之@Enable深入讲解

    这篇文章主要介绍了SpringBoot自动装配之@Enable,SpringBoot中提供了很多Enable开头的注解,这些注解都是用于动态启用某些功能的。而其底层原理是使用@Import注 解导入一些配置类,实现Bean的动态加载
    2023-01-01
  • 详解Java中的延时队列 DelayQueue

    详解Java中的延时队列 DelayQueue

    这篇文章主要介绍了Java中延时队列 DelayQueue的相关资料,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-12-12
  • mybatisPlus返回Map类型的集合

    mybatisPlus返回Map类型的集合

    本文主要介绍了mybatisPlus返回Map类型的集合,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03

最新评论