From c00ecbe8d01e9b8d41b15f3c041c320b84ea95e5 Mon Sep 17 00:00:00 2001 From: houxinyu Date: Sun, 23 Jul 2023 12:56:04 +0800 Subject: [PATCH] update version --- .../parser/redis/RedisXmlELParser.java | 2 +- .../redis/exception/RedisException.java | 2 +- .../parser/redis/mode/RedisParserHelper.java | 2 +- .../parser/redis/mode/RedisParserMode.java | 2 +- .../redis/mode/polling/ChainPollingTask.java | 2 +- .../mode/polling/RedisParserPollingMode.java | 25 +++++++++++++------ .../redis/mode/polling/ScriptPollingTask.java | 2 +- .../subscribe/RedisParserSubscribeMode.java | 2 +- .../parser/redis/vo/RedisParserVO.java | 2 +- .../spi/redis/RedisParserClassNameSpi.java | 3 +++ 10 files changed, 29 insertions(+), 15 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 07ab1f8a4..547b291c5 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 @@ -24,7 +24,7 @@ import java.util.Objects; * Redis解析器实现,只支持EL形式的XML,不支持其他的形式 * * @author hxinyu - * @since 2.10.6 + * @since 2.11.0 */ public class RedisXmlELParser extends ClassXmlFlowELParser { diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/exception/RedisException.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/exception/RedisException.java index 3882bfb94..1b6ee435f 100644 --- a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/exception/RedisException.java +++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/exception/RedisException.java @@ -4,7 +4,7 @@ package com.yomahub.liteflow.parser.redis.exception; * Redis解析异常 * * @author hxinyu - * @since 2.10.6 + * @since 2.11.0 */ public class RedisException extends RuntimeException{ diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/RedisParserHelper.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/RedisParserHelper.java index ee0541678..5b1762197 100644 --- a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/RedisParserHelper.java +++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/RedisParserHelper.java @@ -15,7 +15,7 @@ import java.util.List; * Redis 解析器通用接口 * * @author hxinyu - * @since 2.10.6 + * @since 2.11.0 */ public interface RedisParserHelper { diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/RedisParserMode.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/RedisParserMode.java index 7709943df..13c4b8753 100644 --- a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/RedisParserMode.java +++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/RedisParserMode.java @@ -4,7 +4,7 @@ package com.yomahub.liteflow.parser.redis.mode; * 用于定义redis规则存储和监听方式的枚举类 * * @author hxinyu - * @since 2.10.6 + * @since 2.11.0 */ public enum RedisParserMode { diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/polling/ChainPollingTask.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/polling/ChainPollingTask.java index d0c0e3016..127028c1d 100644 --- a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/polling/ChainPollingTask.java +++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/polling/ChainPollingTask.java @@ -16,7 +16,7 @@ import java.util.Set; * 用于轮询chain的定时任务 * * @author hxinyu - * @since 2.10.6 + * @since 2.11.0 */ public class ChainPollingTask { diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/polling/RedisParserPollingMode.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/polling/RedisParserPollingMode.java index a9eb59379..a7483a314 100644 --- a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/polling/RedisParserPollingMode.java +++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/polling/RedisParserPollingMode.java @@ -12,15 +12,13 @@ import com.yomahub.liteflow.spi.holder.ContextAwareHolder; import redis.clients.jedis.Jedis; import java.util.*; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; +import java.util.concurrent.*; /** * Redis 轮询机制实现类 * * @author hxinyu - * @since 2.10.6 + * @since 2.11.0 */ public class RedisParserPollingMode implements RedisParserHelper { @@ -43,6 +41,15 @@ public class RedisParserPollingMode implements RedisParserHelper { //scriptKey中value的SHA1加密值 用于轮询时确定value是否变化 private Map scriptSHAMap = new HashMap<>(); + //定时任务线程池参数配置 + private static final int CORE_POOL_SIZE = 1; + + private static final int MAX_POOL_SIZE = 1; + + private static final int QUEUE_CAPACITY = 5; + + private static final Long KEEP_ALIVE_TIME = 1L; + //计算hash中field数量的lua脚本 private final String luaOfKey = "local keys = redis.call(\"hkeys\", KEYS[1]);\n" + "return #keys;\n"; @@ -186,11 +193,15 @@ public class RedisParserPollingMode implements RedisParserHelper { String valueLuaOfChain = chainJedis.scriptLoad(luaOfValue); //定时任务线程池 - ScheduledExecutorService pool = Executors.newScheduledThreadPool(10); + ScheduledExecutorService pool = Executors.newScheduledThreadPool(1); + ScheduledThreadPoolExecutor pollExecutor = new ScheduledThreadPoolExecutor( + CORE_POOL_SIZE, + new ThreadPoolExecutor.DiscardOldestPolicy()); + //添加轮询chain的定时任务 ChainPollingTask chainTask = new ChainPollingTask(redisParserVO, chainJedis, chainNum, chainSHAMap, LOG); - pool.scheduleAtFixedRate(chainTask.pollChainTask(keyLuaOfChain, valueLuaOfChain), + pollExecutor.scheduleAtFixedRate(chainTask.pollChainTask(keyLuaOfChain, valueLuaOfChain), 60, redisParserVO.getPollingInterval().longValue(), TimeUnit.SECONDS); //如果有脚本 @@ -202,7 +213,7 @@ public class RedisParserPollingMode implements RedisParserHelper { //添加轮询script的定时任务 ScriptPollingTask scriptTask = new ScriptPollingTask(redisParserVO, scriptJedis, scriptNum, scriptSHAMap, LOG); - pool.scheduleAtFixedRate(scriptTask.pollScriptTask(keyLuaOfScript, valueLuaOfScript), + pollExecutor.scheduleAtFixedRate(scriptTask.pollScriptTask(keyLuaOfScript, valueLuaOfScript), 60, redisParserVO.getPollingInterval().longValue(), TimeUnit.SECONDS); } } diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/polling/ScriptPollingTask.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/polling/ScriptPollingTask.java index 274c82074..0c4ad610f 100644 --- a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/polling/ScriptPollingTask.java +++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/polling/ScriptPollingTask.java @@ -15,7 +15,7 @@ import java.util.Set; * 用于轮询script的定时任务 * * @author hxinyu - * @since 2.10.6 + * @since 2.11.0 */ public class ScriptPollingTask { diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/subscribe/RedisParserSubscribeMode.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/subscribe/RedisParserSubscribeMode.java index 41162fa30..2a79a5242 100644 --- a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/subscribe/RedisParserSubscribeMode.java +++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/subscribe/RedisParserSubscribeMode.java @@ -28,7 +28,7 @@ import java.util.Set; * Redisson客户端 RMapCache存储结构 * * @author hxinyu - * @since 2.10.6 + * @since 2.11.0 */ public class RedisParserSubscribeMode implements RedisParserHelper { 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 c55b79644..ded77058f 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 @@ -6,7 +6,7 @@ import com.yomahub.liteflow.parser.redis.mode.RedisParserMode; * 用于解析RuleSourceExtData的vo类,用于Redis模式中 * * @author hxinyu - * @since 2.10.6 + * @since 2.11.0 */ public class RedisParserVO { diff --git a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/spi/redis/RedisParserClassNameSpi.java b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/spi/redis/RedisParserClassNameSpi.java index 7fe750c1b..51aeabfdc 100644 --- a/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/spi/redis/RedisParserClassNameSpi.java +++ b/liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/spi/redis/RedisParserClassNameSpi.java @@ -5,6 +5,9 @@ import com.yomahub.liteflow.parser.spi.ParserClassNameSpi; /** * Redis 解析器 SPI 实现 + * + * @author hxinyu + * @since 2.11.0 */ public class RedisParserClassNameSpi implements ParserClassNameSpi {