首页>代码>SpringBoot2整合Apache Zookeeper集群管理、负载均衡功能代码>/zookeeper-demo1/src/main/java/com/test/config/ZookeeperConfig.java
package com.test.config;

import javax.annotation.PostConstruct;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * zookeeper连接配置
 * @author 程就人生
 * @date 2020年1月13日
 */
@Configuration
public class ZookeeperConfig {
	
	//zookeeper连接地址
	@Value("${zookeeper.register.address}")
	private String strZkAddress;
	
	//连接初始时间
	@Value("${zookeeper.base.sleep.time.ms}")
	private int strBaseSleepTimeMs;
	
	//重试次数
	@Value("${zookeeper.max.retries}")
	private int strMaxRetries;
	
	@Value("${zookeeper.register.node}")
	private String strManagerPath;
	
	@Value("${zookeeper.register.pathPrefix}")
	private String strPathPrefix;
	
	public static String managerPath;
	
	public static String pathPrefix;
	
	public static String zkAddress;
	
	private static int baseSleepTimeMs;
	
	private static int maxRetries;
	
	/**
	 * 静态变量初始化,postContruct的作用
	 * 需要执行的方法,在完成依赖项注入后,执行任何初始化
	 * 这里用于从配置文件里获取配置,同时保证CuratorFramework只有一个实例
	 */
	@PostConstruct
	private void init(){
		zkAddress = strZkAddress;
		baseSleepTimeMs = strBaseSleepTimeMs;
		maxRetries = strMaxRetries;
		managerPath = strManagerPath;
		pathPrefix = strPathPrefix;
	}
	
	/**
	 * 创建CuratorFramework实例,全局唯一
	 * @return CuratorFramework 实例
	 */
	public static CuratorFramework createInstance(){
		
		// 重试策略:第一次重试等待1s,第二次重试等待2s,第三次重试等待4s
		// 第一个参数:等待时间的基础单位,单位为毫秒
		// 第二个参数:最大重试次数
		ExponentialBackoffRetry retryPolicy = new ExponentialBackoffRetry(baseSleepTimeMs, maxRetries);				
		// 第一个参数:zk的连接地址
		// 第二个参数:重试策略
		CuratorFramework curatorFramework = CuratorFrameworkFactory.newClient(zkAddress, retryPolicy);	
		
		return curatorFramework;
	}
	
	/**
	 * 非全局唯一,获取节点用,于上面的不同
	 * initMethod字段表示,start()方法在createInstance()方法执行完毕后执行
	 * @return CuratorFramework 实例
	 */
	@Bean(value="zkClient",initMethod="start")
	public CuratorFramework createInstance1(){
		// 重试策略:第一次重试等待1s,第二次重试等待2s,第三次重试等待4s
		// 第一个参数:等待时间的基础单位,单位为毫秒
		// 第二个参数:最大重试次数
		ExponentialBackoffRetry retryPolicy = new ExponentialBackoffRetry(baseSleepTimeMs, maxRetries);				
		// 第一个参数:zk的连接地址
		// 第二个参数:重试策略
		CuratorFramework curatorFramework = CuratorFrameworkFactory.newClient(zkAddress, retryPolicy);	
		
		return curatorFramework;
	}
}
最近下载更多
xianyu091012  LV4 11月19日
xiaoyuer2  LV8 2022年11月20日
mudingc木钉  LV30 2021年6月16日
wujb315  LV1 2021年1月21日
baynight  LV2 2020年7月22日
qian123go  LV17 2020年6月10日
chyy001  LV5 2020年4月21日
xgaccp  LV8 2020年4月7日
nj1penny  LV2 2020年4月3日
860595563  LV15 2020年3月26日
最近浏览更多
xianyu091012  LV4 11月18日
fellowfun  LV12 2023年9月1日
心如止水  LV17 2023年8月15日
yzshabzbbdvw  LV4 2023年6月3日
lironggang  LV38 2023年3月28日
zxc131313  LV12 2023年2月2日
bibibi234  LV1 2022年12月5日
xiaoyuer2  LV8 2022年11月20日
Hachi6  LV13 2022年9月19日
别胡思乱想啦 2022年6月18日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友