diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/RedisXmlELParser.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/RedisXmlELParser.java
index 8deb542cf..884276d36 100644
--- a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/RedisXmlELParser.java
+++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/RedisXmlELParser.java
@@ -7,6 +7,7 @@ import cn.hutool.core.text.StrFormatter;
import cn.hutool.core.util.StrUtil;
import com.yomahub.liteflow.parser.el.ClassXmlFlowELParser;
import com.yomahub.liteflow.parser.redis.exception.RedisException;
+import com.yomahub.liteflow.parser.redis.util.RedisParserHelper;
import com.yomahub.liteflow.parser.redis.vo.RedisParserVO;
import com.yomahub.liteflow.property.LiteflowConfig;
import com.yomahub.liteflow.property.LiteflowConfigGetter;
@@ -16,6 +17,8 @@ import java.util.Objects;
public class RedisXmlELParser extends ClassXmlFlowELParser {
+ private final RedisParserHelper redisParserHelper;
+
private static final String ERROR_COMMON_MSG = "ruleSourceExtData or map is empty";
private static final String ERROR_MSG_PATTERN = "uleSourceExtData {} is blank";
@@ -38,6 +41,8 @@ public class RedisXmlELParser extends ClassXmlFlowELParser {
//检查配置文件
checkParserVO(redisParserVO);
+
+ redisParserHelper = new RedisParserHelper(redisParserVO);
}
catch (RedisException redisException){
throw redisException;
diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/util/RedisParserHelper.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/util/RedisParserHelper.java
index 964c4de2e..403f35774 100644
--- a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/util/RedisParserHelper.java
+++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/util/RedisParserHelper.java
@@ -1,10 +1,14 @@
package com.yomahub.liteflow.parser.redis.util;
+import cn.hutool.core.text.StrFormatter;
import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
import com.yomahub.liteflow.parser.redis.exception.RedisException;
import com.yomahub.liteflow.parser.redis.vo.RedisParserVO;
import com.yomahub.liteflow.spi.holder.ContextAwareHolder;
+import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
+import org.redisson.config.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -14,6 +18,8 @@ public class RedisParserHelper {
private RedisParserVO redisParserVO;
+ private final String REDIS_URL_PATTERN = "redis://{}:{}";
+
private final String CHAIN_XML_PATTERN = "{}";
private final String NODE_XML_PATTERN = "{}";
@@ -24,19 +30,31 @@ public class RedisParserHelper {
private static final String XML_PATTERN = "{}{}";
- private RedissonClient redissonClient;
+ private RedissonClient chainClient;
+
+ private RedissonClient scriptClient;
public RedisParserHelper(RedisParserVO redisParserVO) {
this.redisParserVO = redisParserVO;
try{
try{
- this.redissonClient = ContextAwareHolder.loadContextAware().getBean(RedissonClient.class);
+ this.chainClient = ContextAwareHolder.loadContextAware().getBean("chainClient");
+ this.scriptClient = ContextAwareHolder.loadContextAware().getBean("scriptClient");
}
catch (Exception ignored){
}
- if(ObjectUtil.isNull(redissonClient)){
- //todo get client
+ if(ObjectUtil.isNull(chainClient)){
+ Config config = new Config();
+ config = getRedissonConfig(redisParserVO, config,
+ Integer.parseInt(redisParserVO.getChainDataBase()));
+ this.chainClient = Redisson.create(config);
+ //如果有脚本数据
+ if (StrUtil.isNotBlank(redisParserVO.getScriptDataBase())){
+ config = getRedissonConfig(redisParserVO, config,
+ Integer.parseInt(redisParserVO.getScriptDataBase()));
+ this.scriptClient = Redisson.create(config);
+ }
}
}
catch (Exception e){
@@ -44,4 +62,17 @@ public class RedisParserHelper {
}
}
+
+ private Config getRedissonConfig(RedisParserVO redisParserVO, Config config, Integer dataBase){
+ String redisAddress = StrFormatter.format(REDIS_URL_PATTERN, redisParserVO.getHost(), redisParserVO.getPort());
+ if (StrUtil.isNotBlank(redisParserVO.getPassword())){
+ config.useSingleServer().setAddress(redisAddress)
+ .setPassword(redisParserVO.getPassword())
+ .setDatabase(dataBase);
+ } else{
+ config.useSingleServer().setAddress(redisAddress)
+ .setDatabase(dataBase);
+ }
+ return config;
+ }
}
diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/vo/RedisParserVO.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/vo/RedisParserVO.java
index a96e8bf83..d2a2d9d2b 100644
--- a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/vo/RedisParserVO.java
+++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/vo/RedisParserVO.java
@@ -8,9 +8,6 @@ public class RedisParserVO {
/*端口号*/
private String port;
- /*账号名*/
- private String username;
-
/*密码*/
private String password;
@@ -26,10 +23,10 @@ public class RedisParserVO {
/*chain配置的键名*/
private String chainKey;
- /*脚本表配置的数据库号*/
+ /*脚本表配置的数据库号 若没有脚本数据可不配置*/
private String scriptDataBase;
- /*脚本配置的键名*/
+ /*脚本配置的键名 若没有脚本数据可不配置*/
private String scriptKey;
public String getHost() {
@@ -48,14 +45,6 @@ public class RedisParserVO {
this.port = port;
}
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
public String getPassword() {
return password;
}