e97fc5a87797e1d12f66caaa90cb6979af43f457.svn-base 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package org.jeecg.boot.starter.lock.core.strategy.impl;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.apache.commons.lang3.StringUtils;
  4. import org.jeecg.boot.starter.lock.core.strategy.RedissonConfigStrategy;
  5. import org.jeecg.boot.starter.lock.prop.RedissonProperties;
  6. import org.jeecg.boot.starter.lock.enums.GlobalConstant;
  7. import org.redisson.config.Config;
  8. /**
  9. * 哨兵方式Redis连接配置
  10. * 比如sentinel.conf里配置为sentinel monitor my-sentinel-name 127.0.0.1 6379 2,那么这里就配置my-sentinel-name
  11. * 配置方式:my-sentinel-name,127.0.0.1:26379,127.0.0.1:26389,127.0.0.1:26399
  12. * @author zyf
  13. * @date 2020-11-11
  14. */
  15. @Slf4j
  16. public class SentinelRedissonConfigStrategyImpl implements RedissonConfigStrategy {
  17. @Override
  18. public Config createRedissonConfig(RedissonProperties redissonProperties) {
  19. Config config = new Config();
  20. try {
  21. String address = redissonProperties.getAddress();
  22. String password = redissonProperties.getPassword();
  23. int database = redissonProperties.getDatabase();
  24. String[] addrTokens = address.split(",");
  25. String sentinelAliasName = addrTokens[0];
  26. // 设置redis配置文件sentinel.conf配置的sentinel别名
  27. config.useSentinelServers().setMasterName(sentinelAliasName);
  28. config.useSentinelServers().setDatabase(database);
  29. if (StringUtils.isNotBlank(password)) {
  30. config.useSentinelServers().setPassword(password);
  31. }
  32. // 设置哨兵节点的服务IP和端口
  33. for (int i = 1; i < addrTokens.length; i++) {
  34. config.useSentinelServers().addSentinelAddress(GlobalConstant.REDIS_CONNECTION_PREFIX+ addrTokens[i]);
  35. }
  36. log.info("初始化哨兵方式Config,redisAddress:" + address);
  37. } catch (Exception e) {
  38. log.error("哨兵Redisson初始化错误", e);
  39. e.printStackTrace();
  40. }
  41. return config;
  42. }
  43. }