From 9e2b8d5dbfe7349608bd7235c3ab4cdebf60b5be Mon Sep 17 00:00:00 2001 From: houxinyu Date: Sun, 2 Jul 2023 13:44:35 +0800 Subject: [PATCH] add init --- .../parser/redis/RedisXmlELParser.java | 5 +++ .../parser/redis/util/RedisParserHelper.java | 39 +++++++++++++++++-- .../parser/redis/vo/RedisParserVO.java | 15 +------ 3 files changed, 42 insertions(+), 17 deletions(-) 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; }