All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.wicp.tams.common.redis.builder.RedisSentinelBuilderTams Maven / Gradle / Ivy

The newest version!
/*
 * **********************************************************************
 * Copyright (c) 2022 .
 * All rights reserved.
 * 项目名称:common
 * 项目描述:公共的工具集
 * 版权说明:本软件属andy.zhou([email protected])所有。
 * ***********************************************************************
 */
package net.wicp.tams.common.redis.builder;

import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

import org.apache.commons.lang3.Validate;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import net.wicp.tams.common.Conf;
import net.wicp.tams.common.redis.RedisAssit;
import net.wicp.tams.common.redis.pool.JedisSentinelPoolTams;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisSentinelPool;
import redis.clients.jedis.Protocol;

@Slf4j
@Data
public class RedisSentinelBuilderTams {
	private GenericObjectPoolConfig poolConfig;
	private static final Lock LOCK = new ReentrantLock();

	private String serverName = "default";

	private int timeout = Protocol.DEFAULT_TIMEOUT;// 创建池的最大时间

	private final JedisSentinelPoolTams jedisSentinelPoolTams = new JedisSentinelPoolTams();
	private String masterName;
	private Set sentinels;
	
	
	
	
	public void init() {
		Validate.notNull(poolConfig, "需要配置信息");
		poolConfig.setJmxEnabled(true);
		poolConfig.setJmxNamePrefix("jedis-pool");
		if (jedisSentinelPoolTams.isInit()) {
			while (true) {
				try {
					LOCK.tryLock(100, TimeUnit.MILLISECONDS);
					if (jedisSentinelPoolTams.isInit()) {
						Map data = Conf
								.getAllConfigValues(String.format("%s.%s", "common.redis.redisserver", serverName),true);
						
						JedisSentinelPool jedisSentinelPool = new JedisSentinelPool(masterName, sentinels, poolConfig,
								timeout, timeout, data.get( "password"),
								RedisAssit.getConfigInt(data, "defaultDb"),
								data.get( "clientName"));
						jedisSentinelPoolTams.setJedisSentinelPool(jedisSentinelPool);
						LOCK.unlock();
						break;
					}
				} catch (InterruptedException e) {
					log.error("error in build().", e);
				}
			}
		}
		log.info("---------------the pool inited---------------");
	}

	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy