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 23961a500..0abec86de 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 @@ -12,6 +12,7 @@ import com.yomahub.liteflow.parser.redis.exception.RedisException; import com.yomahub.liteflow.parser.redis.util.RedisParserByPolling; import com.yomahub.liteflow.parser.redis.util.RedisParserBySubscribe; import com.yomahub.liteflow.parser.redis.util.RedisParserHelper; +import com.yomahub.liteflow.parser.redis.vo.RedisModeEnum; import com.yomahub.liteflow.parser.redis.vo.RedisParserVO; import com.yomahub.liteflow.property.LiteflowConfig; import com.yomahub.liteflow.property.LiteflowConfigGetter; @@ -54,10 +55,16 @@ public class RedisXmlELParser extends ClassXmlFlowELParser { checkParserVO(redisParserVO); //选择订阅机制 or 轮询机制 - if (StrUtil.equalsIgnoreCase("subscribe", redisParserVO.getMode())) { - redisParserHelper = new RedisParserBySubscribe(redisParserVO); - } else { - redisParserHelper = new RedisParserByPolling(redisParserVO); + RedisModeEnum mode = redisParserVO.getMode(); + switch (mode) { + case SUB: + case SUBSCRIBE: + redisParserHelper = new RedisParserBySubscribe(redisParserVO); + break; + case POLL: + default: + redisParserHelper = new RedisParserByPolling(redisParserVO); + break; } } diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/util/RedisParserByPolling.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/util/RedisParserByPolling.java index f5dba400a..590f3d73a 100644 --- a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/util/RedisParserByPolling.java +++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/util/RedisParserByPolling.java @@ -207,8 +207,8 @@ public class RedisParserByPolling implements RedisParserHelper{ /** * 用于轮询chain的定时任务 - * 首先根据hash中field数量的变化拉取新增的chain - * 再根据hash中value的SHA值修改变化的和被删除的chain + * 先根据hash中value的SHA值修改变化的和被删除的chain + * 再根据hash中field数量的变化拉取新增的chain */ private Runnable pollChainTask(String keyLua, String valueLua) { Runnable r = () -> { diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/vo/RedisModeEnum.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/vo/RedisModeEnum.java new file mode 100644 index 000000000..e74374211 --- /dev/null +++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/vo/RedisModeEnum.java @@ -0,0 +1,25 @@ +package com.yomahub.liteflow.parser.redis.vo; + +/** + * 用于定义redis规则存储和监听方式的枚举类 + * + * @author hxinyu + * @since 2.10.6 + */ +public enum RedisModeEnum { + + //poll为轮询模式,subscribe/sub为订阅模式,默认为poll + POLL("poll"), + SUB("subscribe"), + SUBSCRIBE("subscribe"); + + private String mode; + + RedisModeEnum(String mode) { + this.mode = mode; + } + + public String getMode() { + return mode; + } +} 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 1848ecb13..72b944546 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 @@ -19,7 +19,7 @@ public class RedisParserVO { private String password; /*监听机制 轮询为poll 订阅为subscribe 默认为poll*/ - private String mode = "poll"; + private RedisModeEnum mode = RedisModeEnum.POLL; /*轮询时间间隔(s) 默认1分钟 若选择订阅机制可不配置*/ //todo 确定类型是string还是long,若为string需校验 @@ -61,12 +61,19 @@ public class RedisParserVO { this.password = password; } - public String getMode() { + public RedisModeEnum getMode() { return mode; } public void setMode(String mode) { - this.mode = mode; + mode = mode.toUpperCase(); + try{ + RedisModeEnum m = RedisModeEnum.valueOf(mode); + this.mode = m; + } + catch (Exception ignored) { + //枚举类转换出错默认为轮询方式 + } } public String getPollingInterval() { diff --git a/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/pom.xml b/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/pom.xml new file mode 100644 index 000000000..4f142cd6b --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/pom.xml @@ -0,0 +1,19 @@ + + + + liteflow-testcase-el + com.yomahub + ${revision} + ../pom.xml + + 4.0.0 + + liteflow-testcase-el-redis-springboot + + + + + + \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java new file mode 100644 index 000000000..5ea79be7d --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -0,0 +1,4 @@ +package com.yomahub.liteflow.test; + +public class BaseTest { +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/redis/RedisWithXmlELSpringbootTest.java b/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/redis/RedisWithXmlELSpringbootTest.java new file mode 100644 index 000000000..b33734384 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/redis/RedisWithXmlELSpringbootTest.java @@ -0,0 +1,4 @@ +package com.yomahub.liteflow.test.redis; + +public class RedisWithXmlELSpringbootTest { +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/redis/cmp/ACmp.java b/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/redis/cmp/ACmp.java new file mode 100644 index 000000000..5ee118efc --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/redis/cmp/ACmp.java @@ -0,0 +1,4 @@ +package com.yomahub.liteflow.test.redis.cmp; + +public class ACmp { +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/redis/cmp/BCmp.java b/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/redis/cmp/BCmp.java new file mode 100644 index 000000000..ab191401b --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/redis/cmp/BCmp.java @@ -0,0 +1,4 @@ +package com.yomahub.liteflow.test.redis.cmp; + +public class BCmp { +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/redis/cmp/CCmp.java b/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/redis/cmp/CCmp.java new file mode 100644 index 000000000..277bdbe08 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/redis/cmp/CCmp.java @@ -0,0 +1,4 @@ +package com.yomahub.liteflow.test.redis.cmp; + +public class CCmp { +} diff --git a/liteflow-testcase-el/pom.xml b/liteflow-testcase-el/pom.xml index 2d53f3497..6a2189ceb 100644 --- a/liteflow-testcase-el/pom.xml +++ b/liteflow-testcase-el/pom.xml @@ -34,6 +34,7 @@ liteflow-testcase-el-script-lua-springboot liteflow-testcase-el-script-multi-language-springboot liteflow-testcase-el-script-aviator-springboot + liteflow-testcase-el-redis-springboot