
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