123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- package org.jeecg.boot.starter.lock.core;
- import com.google.common.base.Preconditions;
- import lombok.extern.slf4j.Slf4j;
- import org.jeecg.boot.starter.lock.core.strategy.RedissonConfigStrategy;
- import org.jeecg.boot.starter.lock.prop.RedissonProperties;
- import org.jeecg.boot.starter.lock.core.strategy.impl.ClusterRedissonConfigStrategyImpl;
- import org.jeecg.boot.starter.lock.core.strategy.impl.MasterslaveRedissonConfigStrategyImpl;
- import org.jeecg.boot.starter.lock.core.strategy.impl.SentinelRedissonConfigStrategyImpl;
- import org.jeecg.boot.starter.lock.core.strategy.impl.StandaloneRedissonConfigStrategyImpl;
- import org.jeecg.boot.starter.lock.enums.RedisConnectionType;
- import org.redisson.Redisson;
- import org.redisson.config.Config;
- /**
- * Redisson配置管理器,用于初始化的redisson实例
- *
- * @author zyf
- * @date 2020-11-12
- */
- @Slf4j
- public class RedissonManager {
- private Config config = new Config();
- private Redisson redisson = null;
- public RedissonManager() {
- }
- public RedissonManager(RedissonProperties redissonProperties) {
- //装配开关
- Boolean enabled = redissonProperties.getEnabled();
- if (enabled) {
- try {
- config = RedissonConfigFactory.getInstance().createConfig(redissonProperties);
- redisson = (Redisson) Redisson.create(config);
- } catch (Exception e) {
- log.error("Redisson初始化错误", e);
- }
- }
- }
- public Redisson getRedisson() {
- return redisson;
- }
- /**
- * Redisson连接方式配置工厂
- * 双重检查锁
- */
- static class RedissonConfigFactory {
- private RedissonConfigFactory() {
- }
- private static volatile RedissonConfigFactory factory = null;
- public static RedissonConfigFactory getInstance() {
- if (factory == null) {
- synchronized (Object.class) {
- if (factory == null) {
- factory = new RedissonConfigFactory();
- }
- }
- }
- return factory;
- }
- /**
- * 根据连接类型創建连接方式的配置
- *
- * @param redissonProperties
- * @return Config
- */
- Config createConfig(RedissonProperties redissonProperties) {
- Preconditions.checkNotNull(redissonProperties);
- Preconditions.checkNotNull(redissonProperties.getAddress(), "redis地址未配置");
- RedisConnectionType connectionType = redissonProperties.getType();
- // 声明连接方式
- RedissonConfigStrategy redissonConfigStrategy;
- if (connectionType.equals(RedisConnectionType.SENTINEL)) {
- redissonConfigStrategy = new SentinelRedissonConfigStrategyImpl();
- } else if (connectionType.equals(RedisConnectionType.CLUSTER)) {
- redissonConfigStrategy = new ClusterRedissonConfigStrategyImpl();
- } else if (connectionType.equals(RedisConnectionType.MASTERSLAVE)) {
- redissonConfigStrategy = new MasterslaveRedissonConfigStrategyImpl();
- } else {
- redissonConfigStrategy = new StandaloneRedissonConfigStrategyImpl();
- }
- Preconditions.checkNotNull(redissonConfigStrategy, "连接方式创建异常");
- return redissonConfigStrategy.createRedissonConfig(redissonProperties);
- }
- }
- }
|