jason před 7 měsíci
rodič
revize
dee0e9ee10

+ 21 - 21
liteflow-core/src/main/java/com/yomahub/liteflow/property/LiteflowConfig.java

@@ -44,9 +44,6 @@ public class LiteflowConfig {
 	// 并行线程执行器class路径
 	private String threadExecutorClass;
 
-	// chain线程执行器class路径
-	private String chainThreadExecutorClass;
-
 	// 异步线程最大等待秒数
 	@Deprecated
 	private Integer whenMaxWaitSeconds;
@@ -76,12 +73,6 @@ public class LiteflowConfig {
 	// 异步线程池最大队列数量
 	private Integer whenQueueLimit;
 
-	// chain线程池最大线程数
-	private Integer chainMaxWorkers;
-
-	// chain线程池最大队列数量
-	private Integer chainQueueLimit;
-
 	// 解析模式,一共有三种,具体看其定义
 	private ParseModeEnum parseMode;
 
@@ -132,6 +123,15 @@ public class LiteflowConfig {
 	//脚本特殊设置选项
 	private Map<String, String> scriptSetting;
 
+	// chain线程池最大线程数
+	private Integer chainMaxWorkers;
+
+	// chain线程池最大队列数量
+	private Integer chainQueueLimit;
+
+	// chain线程执行器class路径
+	private String chainThreadExecutorClass;
+
 	// chain线程池是否隔离
 	// 每一个chain里的when和异步循环合并起来都用单独的线程池。也就是说定义了多少个chain,就有多少个线程池
 	private Boolean chainThreadPoolIsolate;
@@ -256,6 +256,7 @@ public class LiteflowConfig {
 	public void setWhenMaxWorkers(Integer whenMaxWorkers) {
 		this.whenMaxWorkers = whenMaxWorkers;
 	}
+
 	public Integer getWhenQueueLimit() {
 		if (ObjectUtil.isNull(whenQueueLimit)) {
 			return 512;
@@ -323,18 +324,6 @@ public class LiteflowConfig {
 		this.threadExecutorClass = threadExecutorClass;
 	}
 
-	public String getChainThreadExecutorClass() {
-		if (StrUtil.isBlank(chainThreadExecutorClass)) {
-			return "com.yomahub.liteflow.thread.LiteFlowDefaultChainExecutorBuilder";
-		} else {
-			return chainThreadExecutorClass;
-		}
-	}
-
-	public void setChainThreadExecutorClass(String chainThreadExecutorClass) {
-		this.chainThreadExecutorClass = chainThreadExecutorClass;
-	}
-
 	public String getNodeExecutorClass() {
 		if (StrUtil.isBlank(nodeExecutorClass)) {
 			return "com.yomahub.liteflow.flow.executor.DefaultNodeExecutor";
@@ -570,4 +559,15 @@ public class LiteflowConfig {
 		this.chainQueueLimit = chainQueueLimit;
 	}
 
+	public String getChainThreadExecutorClass() {
+		if (StrUtil.isBlank(chainThreadExecutorClass)) {
+			return "com.yomahub.liteflow.thread.LiteFlowDefaultChainExecutorBuilder";
+		} else {
+			return chainThreadExecutorClass;
+		}
+	}
+
+	public void setChainThreadExecutorClass(String chainThreadExecutorClass) {
+		this.chainThreadExecutorClass = chainThreadExecutorClass;
+	}
 }

+ 5 - 1
liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/config/LiteflowAutoConfiguration.java

@@ -30,7 +30,6 @@ public class LiteflowAutoConfiguration {
 		liteflowConfig.setRuleSourceExtDataMap(property.getRuleSourceExtDataMap());
 		liteflowConfig.setSlotSize(property.getSlotSize());
 		liteflowConfig.setThreadExecutorClass(property.getThreadExecutorClass());
-		liteflowConfig.setChainThreadExecutorClass(property.getChainThreadExecutorClass());
 		liteflowConfig.setWhenMaxWaitSeconds(property.getWhenMaxWaitSeconds());
 		liteflowConfig.setEnableLog(liteflowMonitorProperty.isEnableLog());
 		liteflowConfig.setQueueLimit(liteflowMonitorProperty.getQueueLimit());
@@ -52,6 +51,11 @@ public class LiteflowAutoConfiguration {
 		liteflowConfig.setParallelQueueLimit(property.getParallelQueueLimit());
 		liteflowConfig.setParallelLoopExecutorClass(property.getParallelLoopExecutorClass());
 		liteflowConfig.setFallbackCmpEnable(property.isFallbackCmpEnable());
+		liteflowConfig.setChainThreadExecutorClass(property.getChainThreadExecutorClass());
+		liteflowConfig.setChainQueueLimit(property.getParallelQueueLimit());
+		liteflowConfig.setChainMaxWorkers(property.getParallelMaxWorkers());
+		liteflowConfig.setChainThreadPoolIsolate(property.isChainThreadPoolIsolate());
+
 		return liteflowConfig;
 	}
 

+ 43 - 20
liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/config/LiteflowProperty.java

@@ -40,9 +40,6 @@ public class LiteflowProperty {
 	// 并行线程执行器class路径
 	private String threadExecutorClass;
 
-    // chain线程执行器class路径
-    private String chainThreadExecutorClass;
-
 	// 异步线程最大等待描述
 	private int whenMaxWaitSeconds;
 
@@ -86,9 +83,18 @@ public class LiteflowProperty {
 	// 是否启用组件降级
 	private Boolean fallbackCmpEnable;
 
-    // chain线程池是否隔离
-    // 每一个chain里的when和异步循环合并起来都用单独的线程池。也就是说定义了多少个chain,就有多少个线程池
-    private boolean chainThreadPoolIsolate;
+	// chain线程池是否隔离
+	// 每一个chain里的when和异步循环合并起来都用单独的线程池。也就是说定义了多少个chain,就有多少个线程池
+	private Boolean chainThreadPoolIsolate;
+
+	// chain线程池最大线程数
+	private int chainMaxWorkers;
+
+	// chain线程池最大队列数量
+	private int chainQueueLimit;
+
+	// chain线程执行器class路径
+	private String chainThreadExecutorClass;
 
 	public boolean isEnable() {
 		return enable;
@@ -175,14 +181,6 @@ public class LiteflowProperty {
 		this.threadExecutorClass = threadExecutorClass;
 	}
 
-    public String getChainThreadExecutorClass() {
-        return chainThreadExecutorClass;
-    }
-
-    public void setChainThreadExecutorClass(String chainThreadExecutorClass) {
-        this.chainThreadExecutorClass = chainThreadExecutorClass;
-    }
-
 	public String getNodeExecutorClass() {
 		return nodeExecutorClass;
 	}
@@ -283,11 +281,36 @@ public class LiteflowProperty {
 		return fallbackCmpEnable;
 	}
 
-    public void setChainThreadPoolIsolate(boolean chainThreadPoolIsolate) {
-        this.chainThreadPoolIsolate = chainThreadPoolIsolate;
-    }
+	public void setChainThreadPoolIsolate(boolean chainThreadPoolIsolate) {
+		this.chainThreadPoolIsolate = chainThreadPoolIsolate;
+	}
+
+	public boolean isChainThreadPoolIsolate() {
+		return chainThreadPoolIsolate;
+	}
+
+	public int getChainMaxWorkers() {
+		return chainMaxWorkers;
+	}
+
+	public void setChainMaxWorkers(int chainMaxWorkers) {
+		this.chainMaxWorkers = chainMaxWorkers;
+	}
+
+	public int getChainQueueLimit() {
+		return chainQueueLimit;
+	}
+
+	public void setChainQueueLimit(int chainQueueLimit) {
+		this.chainQueueLimit = chainQueueLimit;
+	}
+
+	public String getChainThreadExecutorClass() {
+		return chainThreadExecutorClass;
+	}
+
+	public void setChainThreadExecutorClass(String chainThreadExecutorClass) {
+		this.chainThreadExecutorClass = chainThreadExecutorClass;
+	}
 
-    public boolean isChainThreadPoolIsolate() {
-        return chainThreadPoolIsolate;
-    }
 }

+ 4 - 1
liteflow-solon-plugin/src/main/resources/META-INF/liteflow-default.properties

@@ -5,7 +5,6 @@ liteflow.main-executor-works=64
 liteflow.main-executor-class=com.yomahub.liteflow.thread.LiteFlowDefaultMainExecutorBuilder
 liteflow.request-id-generator-class=com.yomahub.liteflow.flow.id.DefaultRequestIdGenerator
 liteflow.thread-executor-class=com.yomahub.liteflow.thread.LiteFlowDefaultWhenExecutorBuilder
-liteflow.chain-thread-executor-class=com.yomahub.liteflow.thread.LiteFlowDefaultChainExecutorBuilder
 liteflow.when-max-wait-seconds=15
 liteflow.when-max-workers=16
 liteflow.when-queue-limit=512
@@ -19,3 +18,7 @@ liteflow.monitor.queue-limit=200
 liteflow.monitor.delay=300000
 liteflow.monitor.period=300000
 liteflow.fallback-cmp-enable=false
+liteflow.chain-max-workers=16
+liteflow.chain-queue-limit=512
+liteflow.chain-thread-pool-isolate=false
+liteflow.chain-thread-executor-class=com.yomahub.liteflow.thread.LiteFlowDefaultChainExecutorBuilder

+ 28 - 7
liteflow-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json

@@ -110,13 +110,6 @@
       "sourceType": "com.yomahub.liteflow.springboot.LiteflowProperty",
       "defaultValue": false
     },
-    {
-      "name": "liteflow.chain-thread-pool-isolate",
-      "type": "java.lang.Boolean",
-      "description": "set whether the chain thread pool is isolated.",
-      "sourceType": "com.yomahub.liteflow.springboot.LiteflowProperty",
-      "defaultValue": false
-    },
     {
       "name": "liteflow.parse-mode",
       "type": "com.yomahub.liteflow.enums.ParseModeEnum",
@@ -227,6 +220,34 @@
       "type": "java.util.Map",
       "description": "script special settings.",
       "sourceType": "com.yomahub.liteflow.springboot.LiteflowProperty"
+    },
+    {
+      "name": "liteflow.chain-thread-pool-isolate",
+      "type": "java.lang.Boolean",
+      "description": "set whether the chain thread pool is isolated.",
+      "sourceType": "com.yomahub.liteflow.springboot.LiteflowProperty",
+      "defaultValue": false
+    },
+    {
+      "name": "liteflow.chain-max-workers",
+      "type": "java.lang.Integer",
+      "description": "Set the chain thread pool worker max-size on \" when \" mode.",
+      "sourceType": "com.yomahub.liteflow.springboot.LiteflowProperty",
+      "defaultValue": 16
+    },
+    {
+      "name": "liteflow.chain-queue-limit",
+      "type": "java.lang.Integer",
+      "description": "Set the chain thread pool queue max-size on \" when \" mode.",
+      "sourceType": "com.yomahub.liteflow.springboot.LiteflowProperty",
+      "defaultValue": 512
+    },
+    {
+      "name": "liteflow.chain-thread-executor-class",
+      "type": "java.lang.String",
+      "description": "Custom chain thread pool implement for when executor.",
+      "sourceType": "com.yomahub.liteflow.springboot.LiteflowProperty",
+      "defaultValue": "com.yomahub.liteflow.thread.LiteFlowDefaultChainExecutorBuilder"
     }
   ]
 }

+ 4 - 3
liteflow-spring-boot-starter/src/main/resources/META-INF/liteflow-default.properties

@@ -9,10 +9,7 @@ liteflow.when-max-wait-time=15000
 liteflow.when-max-wait-time-unit=MILLISECONDS
 liteflow.when-max-workers=16
 liteflow.when-queue-limit=512
-liteflow.chain-max-workers=16
-liteflow.chain-queue-limit=512
 liteflow.when-thread-pool-isolate=false
-liteflow.chain-thread-pool-isolate=false
 liteflow.parse-mode=PARSE_ALL_ON_START
 liteflow.retry-count=0
 liteflow.support-multiple-type=false
@@ -29,4 +26,8 @@ liteflow.monitor.queue-limit=200
 liteflow.monitor.delay=300000
 liteflow.monitor.period=300000
 liteflow.enable-monitor-file=false
+liteflow.chain-max-workers=16
+liteflow.chain-queue-limit=512
+liteflow.chain-thread-pool-isolate=false
+liteflow.chain-thread-executor-class=com.yomahub.liteflow.thread.LiteFlowDefaultChainExecutorBuilder