Explorar o código

enhancement #IA6E3Q redis配置的时候可以指定Redisson的链接数,默认的connections太多了

everywhere.z hai 11 meses
pai
achega
9e3cbe6238

+ 14 - 13
liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/mode/RedisParserHelper.java

@@ -15,6 +15,7 @@ import com.yomahub.liteflow.parser.redis.vo.RedisParserVO;
 import com.yomahub.liteflow.util.RuleParsePluginUtil;
 import org.redisson.config.Config;
 import org.redisson.config.SentinelServersConfig;
+import org.redisson.config.SingleServerConfig;
 
 /**
  * Redis 解析器通用接口
@@ -56,23 +57,19 @@ public interface RedisParserHelper {
     default Config getSingleRedissonConfig(RedisParserVO redisParserVO, Integer dataBase) {
         Config config = new Config();
         String redisAddress = StrFormatter.format(SINGLE_REDIS_URL_PATTERN, redisParserVO.getHost(), redisParserVO.getPort());
+
+        SingleServerConfig singleServerConfig = config.useSingleServer().setAddress(redisAddress)
+                .setConnectionPoolSize(redisParserVO.getConnectionPoolSize())
+                .setConnectionMinimumIdleSize(redisParserVO.getConnectionMinimumIdleSize())
+                .setDatabase(dataBase);
+
         //如果配置了用户名和密码
         if (StrUtil.isNotBlank(redisParserVO.getUsername()) && StrUtil.isNotBlank(redisParserVO.getPassword())) {
-            config.useSingleServer().setAddress(redisAddress)
-                    .setUsername(redisParserVO.getUsername())
-                    .setPassword(redisParserVO.getPassword())
-                    .setDatabase(dataBase);
+            singleServerConfig.setUsername(redisParserVO.getUsername()).setPassword(redisParserVO.getPassword());
         }
         //如果配置了密码
         else if (StrUtil.isNotBlank(redisParserVO.getPassword())) {
-            config.useSingleServer().setAddress(redisAddress)
-                    .setPassword(redisParserVO.getPassword())
-                    .setDatabase(dataBase);
-        }
-        //没有配置密码
-        else {
-            config.useSingleServer().setAddress(redisAddress)
-                    .setDatabase(dataBase);
+            singleServerConfig.setPassword(redisParserVO.getPassword());
         }
         return config;
     }
@@ -86,7 +83,11 @@ public interface RedisParserHelper {
     default Config getSentinelRedissonConfig(RedisParserVO redisParserVO, Integer dataBase) {
         Config config = new Config();
         SentinelServersConfig sentinelConfig = config.useSentinelServers()
-                .setMasterName(redisParserVO.getMasterName());
+                .setMasterName(redisParserVO.getMasterName())
+                .setMasterConnectionPoolSize(redisParserVO.getConnectionPoolSize())
+                .setSlaveConnectionPoolSize(redisParserVO.getConnectionPoolSize())
+                .setMasterConnectionMinimumIdleSize(redisParserVO.getConnectionMinimumIdleSize())
+                .setSlaveConnectionMinimumIdleSize(redisParserVO.getConnectionMinimumIdleSize());
         redisParserVO.getSentinelAddress().forEach(address -> {
             sentinelConfig.addSentinelAddress(StrFormatter.format(SENTINEL_REDIS_URL_PATTERN, address));
         });

+ 20 - 0
liteflow-rule-plugin/liteflow-rule-redis/src/main/java/com/yomahub/liteflow/parser/redis/vo/RedisParserVO.java

@@ -35,6 +35,10 @@ public class RedisParserVO {
     /*密码*/
     private String password;
 
+    private int connectionMinimumIdleSize = 2;
+
+    private int connectionPoolSize = 4;
+
     /*监听机制 轮询为poll 订阅为subscribe 默认为poll*/
     private RedisParserMode mode = RedisParserMode.POLL;
 
@@ -182,6 +186,22 @@ public class RedisParserVO {
         this.scriptKey = scriptKey;
     }
 
+    public int getConnectionPoolSize() {
+        return connectionPoolSize;
+    }
+
+    public void setConnectionPoolSize(int connectionPoolSize) {
+        this.connectionPoolSize = connectionPoolSize;
+    }
+
+    public int getConnectionMinimumIdleSize() {
+        return connectionMinimumIdleSize;
+    }
+
+    public void setConnectionMinimumIdleSize(int connectionMinimumIdleSize) {
+        this.connectionMinimumIdleSize = connectionMinimumIdleSize;
+    }
+
     @Override
     public String toString() {
         return "RedisParserVO{" +