mirror of
https://gitee.com/dromara/liteFlow.git
synced 2026-05-14 20:22:07 +08:00
add init
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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 = "<chain name=\"{}\">{}</chain>";
|
||||
|
||||
private final String NODE_XML_PATTERN = "<nodes>{}</nodes>";
|
||||
@@ -24,19 +30,31 @@ public class RedisParserHelper {
|
||||
|
||||
private static final String XML_PATTERN = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><flow>{}{}</flow>";
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user