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