fix redis
This commit is contained in:
25
pom.xml
25
pom.xml
@@ -162,6 +162,12 @@
|
|||||||
<scope>runtime</scope>
|
<scope>runtime</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.postgresql</groupId>
|
||||||
|
<artifactId>postgresql</artifactId>
|
||||||
|
<scope>runtime</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.alibaba</groupId>
|
<groupId>com.alibaba</groupId>
|
||||||
<artifactId>druid-spring-boot-starter</artifactId>
|
<artifactId>druid-spring-boot-starter</artifactId>
|
||||||
@@ -203,20 +209,27 @@
|
|||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<!--<dependency>
|
||||||
<groupId>org.redisson</groupId>
|
<groupId>org.redisson</groupId>
|
||||||
<artifactId>redisson-spring-boot-starter</artifactId>
|
<artifactId>redisson-spring-boot-starter</artifactId>
|
||||||
<version>3.15.6</version>
|
<version>3.15.6</version>
|
||||||
</dependency>
|
</dependency>-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.netty</groupId>
|
<groupId>io.netty</groupId>
|
||||||
<artifactId>netty-all</artifactId>
|
<artifactId>netty-all</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-data-21</artifactId>
|
<dependency>
|
||||||
<version>3.11.0</version> </dependency> <dependency> <groupId>org.redisson</groupId>
|
<groupId>org.redisson</groupId>
|
||||||
<artifactId>redisson</artifactId> <version>3.11.0</version> </dependency> -->
|
<artifactId>redisson-spring-data-21</artifactId>
|
||||||
|
<version>3.11.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.redisson</groupId>
|
||||||
|
<artifactId>redisson</artifactId>
|
||||||
|
<version>3.11.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.hutool</groupId>
|
<groupId>cn.hutool</groupId>
|
||||||
<artifactId>hutool-all</artifactId>
|
<artifactId>hutool-all</artifactId>
|
||||||
<version>5.8.16</version>
|
<version>5.8.16</version>
|
||||||
|
|||||||
@@ -45,10 +45,6 @@ public class RedisConfig {
|
|||||||
redisTemplate.afterPropertiesSet();
|
redisTemplate.afterPropertiesSet();
|
||||||
return redisTemplate;
|
return redisTemplate;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
|
||||||
public RedissonUtils redissonUtils(RedissonClient redissonClient) {
|
|
||||||
return new RedissonUtils(redissonClient);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,158 +1,158 @@
|
|||||||
//package com.newyetai.frame.redis.redisson;
|
package com.senmesh.frame.redis.redisson;
|
||||||
//
|
|
||||||
//import com.newyetai.frame.redis.property.RedissonProperties;
|
import com.senmesh.frame.redis.property.RedissonProperties;
|
||||||
//import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
//import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
//import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
//import java.util.List;
|
import java.util.List;
|
||||||
//
|
|
||||||
//import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
//import org.redisson.Redisson;
|
import org.redisson.Redisson;
|
||||||
//import org.redisson.api.RedissonClient;
|
import org.redisson.api.RedissonClient;
|
||||||
//import org.redisson.config.Config;
|
import org.redisson.config.Config;
|
||||||
|
import org.redisson.spring.data.connection.RedissonConnectionFactory;
|
||||||
//import org.redisson.spring.data.connection.RedissonConnectionFactory;
|
//import org.redisson.spring.data.connection.RedissonConnectionFactory;
|
||||||
////import org.redisson.spring.data.connection.RedissonConnectionFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
//import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||||
//import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
//import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
//import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
|
||||||
//import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
|
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
|
||||||
//import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
|
import org.springframework.boot.autoconfigure.data.redis.RedisProperties.Sentinel;
|
||||||
//import org.springframework.boot.autoconfigure.data.redis.RedisProperties.Sentinel;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
//import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.context.annotation.Bean;
|
||||||
//import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
||||||
//import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Import;
|
||||||
//import org.springframework.context.annotation.Import;
|
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||||
//import org.springframework.data.redis.connection.RedisConnectionFactory;
|
import org.springframework.data.redis.core.RedisOperations;
|
||||||
//import org.springframework.data.redis.core.RedisOperations;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
//import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
//import org.springframework.data.redis.core.StringRedisTemplate;
|
import org.springframework.util.ReflectionUtils;
|
||||||
//import org.springframework.util.ReflectionUtils;
|
|
||||||
//
|
/**
|
||||||
///**
|
* 参考redisson-spring-boot-starter的RedissonAutoConfiguration,沿用redis配置,移除自定义配置文件解析配置
|
||||||
// * 参考redisson-spring-boot-starter的RedissonAutoConfiguration,沿用redis配置,移除自定义配置文件解析配置
|
*
|
||||||
// *
|
* @author sr on 2020-05-26
|
||||||
// * @author sr on 2020-05-26
|
*/
|
||||||
// */
|
@Configuration
|
||||||
//@Configuration
|
@ConditionalOnClass({Redisson.class, RedisOperations.class})
|
||||||
//@ConditionalOnClass({Redisson.class, RedisOperations.class})
|
@AutoConfigureAfter({RedisAutoConfiguration.class})
|
||||||
//@AutoConfigureAfter({RedisAutoConfiguration.class})
|
@EnableConfigurationProperties({RedisProperties.class, RedissonProperties.class})
|
||||||
//@EnableConfigurationProperties({RedisProperties.class, RedissonProperties.class})
|
@Import({RedisAutoConfiguration.class})
|
||||||
//@Import({RedisAutoConfiguration.class})
|
public class RedissonConfig {
|
||||||
//public class RedissonConfig {
|
|
||||||
//
|
@Autowired
|
||||||
// @Autowired
|
private RedisProperties redisProperties;
|
||||||
// private RedisProperties redisProperties;
|
|
||||||
//
|
@Autowired
|
||||||
// @Autowired
|
private RedissonProperties redissonProperties;
|
||||||
// private RedissonProperties redissonProperties;
|
|
||||||
//
|
@Bean
|
||||||
// @Bean
|
@ConditionalOnMissingBean(name = "redisTemplate")
|
||||||
// @ConditionalOnMissingBean(name = "redisTemplate")
|
public RedisTemplate<Object, Object> redisTemplate(
|
||||||
// public RedisTemplate<Object, Object> redisTemplate(
|
RedisConnectionFactory redisConnectionFactory) {
|
||||||
// RedisConnectionFactory redisConnectionFactory) {
|
RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>();
|
||||||
// RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>();
|
template.setConnectionFactory(redisConnectionFactory);
|
||||||
// template.setConnectionFactory(redisConnectionFactory);
|
return template;
|
||||||
// return template;
|
}
|
||||||
// }
|
|
||||||
//
|
@Bean
|
||||||
// @Bean
|
@ConditionalOnMissingBean(StringRedisTemplate.class)
|
||||||
// @ConditionalOnMissingBean(StringRedisTemplate.class)
|
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
|
||||||
// public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
|
StringRedisTemplate template = new StringRedisTemplate();
|
||||||
// StringRedisTemplate template = new StringRedisTemplate();
|
template.setConnectionFactory(redisConnectionFactory);
|
||||||
// template.setConnectionFactory(redisConnectionFactory);
|
return template;
|
||||||
// return template;
|
}
|
||||||
// }
|
|
||||||
//
|
@Bean
|
||||||
// @Bean
|
@ConditionalOnMissingBean(RedisConnectionFactory.class)
|
||||||
// @ConditionalOnMissingBean(RedisConnectionFactory.class)
|
public RedissonConnectionFactory redissonConnectionFactory(RedissonClient redisson) {
|
||||||
// public RedissonConnectionFactory redissonConnectionFactory(RedissonClient redisson) {
|
return new RedissonConnectionFactory(redisson);
|
||||||
// return new RedissonConnectionFactory(redisson);
|
}
|
||||||
// }
|
|
||||||
//
|
@SuppressWarnings("unchecked")
|
||||||
// @SuppressWarnings("unchecked")
|
@Bean(destroyMethod = "shutdown")
|
||||||
// @Bean(destroyMethod = "shutdown")
|
@ConditionalOnMissingBean(RedissonClient.class)
|
||||||
// @ConditionalOnMissingBean(RedissonClient.class)
|
public RedissonClient redisson() {
|
||||||
// public RedissonClient redisson() {
|
Config config = null;
|
||||||
// Config config = null;
|
Method clusterMethod = ReflectionUtils.findMethod(RedisProperties.class, "getCluster");
|
||||||
// Method clusterMethod = ReflectionUtils.findMethod(RedisProperties.class, "getCluster");
|
Method timeoutMethod = ReflectionUtils.findMethod(RedisProperties.class, "getTimeout");
|
||||||
// Method timeoutMethod = ReflectionUtils.findMethod(RedisProperties.class, "getTimeout");
|
Object timeoutValue = ReflectionUtils.invokeMethod(timeoutMethod, redisProperties);
|
||||||
// Object timeoutValue = ReflectionUtils.invokeMethod(timeoutMethod, redisProperties);
|
int timeout;
|
||||||
// int timeout;
|
if (null == timeoutValue) {
|
||||||
// if (null == timeoutValue) {
|
timeout = 0;
|
||||||
// timeout = 0;
|
} else if (!(timeoutValue instanceof Integer)) {
|
||||||
// } else if (!(timeoutValue instanceof Integer)) {
|
Method millisMethod = ReflectionUtils.findMethod(timeoutValue.getClass(), "toMillis");
|
||||||
// Method millisMethod = ReflectionUtils.findMethod(timeoutValue.getClass(), "toMillis");
|
timeout = ((Long) ReflectionUtils.invokeMethod(millisMethod, timeoutValue)).intValue();
|
||||||
// timeout = ((Long) ReflectionUtils.invokeMethod(millisMethod, timeoutValue)).intValue();
|
} else {
|
||||||
// } else {
|
timeout = (Integer) timeoutValue;
|
||||||
// timeout = (Integer) timeoutValue;
|
}
|
||||||
// }
|
|
||||||
//
|
// 修复不设置密码,传入空字符串,置为空
|
||||||
// // 修复不设置密码,传入空字符串,置为空
|
String password = redisProperties.getPassword();
|
||||||
// String password = redisProperties.getPassword();
|
password = StringUtils.isBlank(password) ? null : password;
|
||||||
// password = StringUtils.isBlank(password) ? null : password;
|
if (redisProperties.getSentinel() != null) {
|
||||||
// if (redisProperties.getSentinel() != null) {
|
Method nodesMethod = ReflectionUtils.findMethod(Sentinel.class, "getNodes");
|
||||||
// Method nodesMethod = ReflectionUtils.findMethod(Sentinel.class, "getNodes");
|
Object nodesValue = ReflectionUtils.invokeMethod(nodesMethod, redisProperties.getSentinel());
|
||||||
// Object nodesValue = ReflectionUtils.invokeMethod(nodesMethod, redisProperties.getSentinel());
|
|
||||||
//
|
String[] nodes;
|
||||||
// String[] nodes;
|
if (nodesValue instanceof String) {
|
||||||
// if (nodesValue instanceof String) {
|
nodes = convert(Arrays.asList(((String) nodesValue).split(",")));
|
||||||
// nodes = convert(Arrays.asList(((String) nodesValue).split(",")));
|
} else {
|
||||||
// } else {
|
nodes = convert((List<String>) nodesValue);
|
||||||
// nodes = convert((List<String>) nodesValue);
|
}
|
||||||
// }
|
|
||||||
//
|
config = new Config();
|
||||||
// config = new Config();
|
config.useSentinelServers()
|
||||||
// config.useSentinelServers()
|
.setPingConnectionInterval(redissonProperties.getPingConnectionInterval())
|
||||||
// .setPingConnectionInterval(redissonProperties.getPingConnectionInterval())
|
.setMasterName(redisProperties.getSentinel().getMaster())
|
||||||
// .setMasterName(redisProperties.getSentinel().getMaster())
|
.addSentinelAddress(nodes).setDatabase(redisProperties.getDatabase())
|
||||||
// .addSentinelAddress(nodes).setDatabase(redisProperties.getDatabase())
|
.setConnectTimeout(timeout).setPassword(password);
|
||||||
// .setConnectTimeout(timeout).setPassword(password);
|
} else if (clusterMethod != null
|
||||||
// } else if (clusterMethod != null
|
&& ReflectionUtils.invokeMethod(clusterMethod, redisProperties) != null) {
|
||||||
// && ReflectionUtils.invokeMethod(clusterMethod, redisProperties) != null) {
|
Object clusterObject = ReflectionUtils.invokeMethod(clusterMethod, redisProperties);
|
||||||
// Object clusterObject = ReflectionUtils.invokeMethod(clusterMethod, redisProperties);
|
Method nodesMethod = ReflectionUtils.findMethod(clusterObject.getClass(), "getNodes");
|
||||||
// Method nodesMethod = ReflectionUtils.findMethod(clusterObject.getClass(), "getNodes");
|
List<String> nodesObject = (List<String>) ReflectionUtils.invokeMethod(nodesMethod, clusterObject);
|
||||||
// List<String> nodesObject = (List<String>) ReflectionUtils.invokeMethod(nodesMethod, clusterObject);
|
|
||||||
//
|
String[] nodes = convert(nodesObject);
|
||||||
// String[] nodes = convert(nodesObject);
|
|
||||||
//
|
config = new Config();
|
||||||
// config = new Config();
|
config.useClusterServers()
|
||||||
// config.useClusterServers()
|
.setPingConnectionInterval(redissonProperties.getPingConnectionInterval())
|
||||||
// .setPingConnectionInterval(redissonProperties.getPingConnectionInterval())
|
.addNodeAddress(nodes).setConnectTimeout(timeout)
|
||||||
// .addNodeAddress(nodes).setConnectTimeout(timeout)
|
.setPassword(password);
|
||||||
// .setPassword(password);
|
} else {
|
||||||
// } else {
|
config = new Config();
|
||||||
// config = new Config();
|
String prefix = "redis://";
|
||||||
// String prefix = "redis://";
|
Method method = ReflectionUtils.findMethod(RedisProperties.class, "isSsl");
|
||||||
// Method method = ReflectionUtils.findMethod(RedisProperties.class, "isSsl");
|
if (method != null && (Boolean) ReflectionUtils.invokeMethod(method, redisProperties)) {
|
||||||
// if (method != null && (Boolean) ReflectionUtils.invokeMethod(method, redisProperties)) {
|
prefix = "rediss://";
|
||||||
// prefix = "rediss://";
|
}
|
||||||
// }
|
|
||||||
//
|
config.useSingleServer()
|
||||||
// config.useSingleServer()
|
.setPingConnectionInterval(redissonProperties.getPingConnectionInterval())
|
||||||
// .setPingConnectionInterval(redissonProperties.getPingConnectionInterval())
|
.setAddress(prefix + redisProperties.getHost() + ":" + redisProperties.getPort())
|
||||||
// .setAddress(prefix + redisProperties.getHost() + ":" + redisProperties.getPort())
|
.setConnectTimeout(timeout).setDatabase(redisProperties.getDatabase())
|
||||||
// .setConnectTimeout(timeout).setDatabase(redisProperties.getDatabase())
|
.setPassword(password);
|
||||||
// .setPassword(password);
|
}
|
||||||
// }
|
return Redisson.create(config);
|
||||||
// return Redisson.create(config);
|
}
|
||||||
// }
|
|
||||||
//
|
private String[] convert(List<String> nodesObject) {
|
||||||
// private String[] convert(List<String> nodesObject) {
|
List<String> nodes = new ArrayList<String>(nodesObject.size());
|
||||||
// List<String> nodes = new ArrayList<String>(nodesObject.size());
|
for (String node : nodesObject) {
|
||||||
// for (String node : nodesObject) {
|
if (!node.startsWith("redis://") && !node.startsWith("rediss://")) {
|
||||||
// if (!node.startsWith("redis://") && !node.startsWith("rediss://")) {
|
nodes.add("redis://" + node);
|
||||||
// nodes.add("redis://" + node);
|
} else {
|
||||||
// } else {
|
nodes.add(node);
|
||||||
// nodes.add(node);
|
}
|
||||||
// }
|
}
|
||||||
// }
|
return nodes.toArray(new String[nodes.size()]);
|
||||||
// return nodes.toArray(new String[nodes.size()]);
|
}
|
||||||
// }
|
|
||||||
//
|
@Bean
|
||||||
// @Bean
|
public RedissonUtils redissonUtils() {
|
||||||
// public RedissonUtils redissonUtils() {
|
return new RedissonUtils(redisson());
|
||||||
// return new RedissonUtils(redisson());
|
}
|
||||||
// }
|
|
||||||
//
|
}
|
||||||
//}
|
|
||||||
|
|||||||
@@ -2,4 +2,5 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
|||||||
com.senmesh.common.CommonConfiguration,\
|
com.senmesh.common.CommonConfiguration,\
|
||||||
com.senmesh.codegenerator.config.CodeConfiguration,\
|
com.senmesh.codegenerator.config.CodeConfiguration,\
|
||||||
com.senmesh.frame.redis.config.RedisCacheConfig,\
|
com.senmesh.frame.redis.config.RedisCacheConfig,\
|
||||||
|
com.senmesh.frame.redis.redisson.RedissonConfig,\
|
||||||
com.senmesh.mq.config.RabbitMqConfiguration
|
com.senmesh.mq.config.RabbitMqConfiguration
|
||||||
Reference in New Issue
Block a user