diff --git a/common/pom.xml b/common/pom.xml
index b6a0b364..d53a6168 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -6,7 +6,7 @@
io.dynamic-threadpool
parent
- ${revision}
+ 1.0.0-SNAPSHOT
common
diff --git a/dynamic-threadpool-spring-boot-starter/pom.xml b/dynamic-threadpool-spring-boot-starter/pom.xml
index f152c303..c5e32a85 100644
--- a/dynamic-threadpool-spring-boot-starter/pom.xml
+++ b/dynamic-threadpool-spring-boot-starter/pom.xml
@@ -6,7 +6,7 @@
io.dynamic-threadpool
parent
- ${revision}
+ 1.0.0-SNAPSHOT
dynamic-threadpool-spring-boot-starter
@@ -44,5 +44,11 @@
io.dynamic-threadpool
common
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
diff --git a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/adapter/ConfigAdapter.java b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/adapter/ConfigAdapter.java
index 34557b0f..f834c658 100644
--- a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/adapter/ConfigAdapter.java
+++ b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/adapter/ConfigAdapter.java
@@ -13,10 +13,9 @@ public class ConfigAdapter {
/**
* 回调修改线程池配置
*
- * @param tpId
* @param config
*/
- public void callbackConfig(String tpId, String config) {
- ThreadPoolDynamicRefresh.refreshDynamicPool(tpId, config);
+ public void callbackConfig(String config) {
+ ThreadPoolDynamicRefresh.refreshDynamicPool(config);
}
}
diff --git a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/adapter/ThreadPoolConfigAdapter.java b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/adapter/ThreadPoolConfigAdapter.java
index 59a0398e..579faac1 100644
--- a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/adapter/ThreadPoolConfigAdapter.java
+++ b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/adapter/ThreadPoolConfigAdapter.java
@@ -31,7 +31,7 @@ public class ThreadPoolConfigAdapter extends ConfigAdapter {
new ThreadPoolExecutor.DiscardOldestPolicy());
public void subscribeConfig(List tpIds) {
- tpIds.forEach(each -> threadPoolOperation.subscribeConfig(each, executorService, (tpId, config) -> callbackConfig(tpId, config)));
+ tpIds.forEach(each -> threadPoolOperation.subscribeConfig(each, executorService, config -> callbackConfig(config)));
}
}
diff --git a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/config/DynamicThreadPoolAutoConfiguration.java b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/config/DynamicThreadPoolAutoConfiguration.java
index 5d9a461c..62ac5041 100644
--- a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/config/DynamicThreadPoolAutoConfiguration.java
+++ b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/config/DynamicThreadPoolAutoConfiguration.java
@@ -29,12 +29,12 @@ public class DynamicThreadPoolAutoConfiguration {
@Bean
public ConfigService configService() {
- return new ThreadPoolConfigService();
+ return new ThreadPoolConfigService(properties);
}
@Bean
public ThreadPoolRunListener threadPoolRunListener() {
- return new ThreadPoolRunListener();
+ return new ThreadPoolRunListener(properties);
}
@Bean
diff --git a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/config/DynamicThreadPoolProperties.java b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/config/DynamicThreadPoolProperties.java
index 2104f124..c84a45a0 100644
--- a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/config/DynamicThreadPoolProperties.java
+++ b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/config/DynamicThreadPoolProperties.java
@@ -17,7 +17,12 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = DynamicThreadPoolProperties.PREFIX)
public class DynamicThreadPoolProperties {
- public static final String PREFIX = "spring.threadpool.dynamic";
+ public static final String PREFIX = "spring.dynamic.thread-pool";
+
+ /**
+ * 服务地址
+ */
+ private String serverAddr;
/**
* 命名空间
diff --git a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/core/ThreadPoolConfigService.java b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/core/ThreadPoolConfigService.java
index 5d34c79a..461510f0 100644
--- a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/core/ThreadPoolConfigService.java
+++ b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/core/ThreadPoolConfigService.java
@@ -1,5 +1,8 @@
package io.dynamic.threadpool.starter.core;
+import io.dynamic.threadpool.starter.config.DynamicThreadPoolProperties;
+import io.dynamic.threadpool.starter.http.HttpAgent;
+import io.dynamic.threadpool.starter.http.ServerHttpAgent;
import io.dynamic.threadpool.starter.listener.ClientWorker;
import io.dynamic.threadpool.starter.listener.Listener;
@@ -13,10 +16,13 @@ import java.util.Arrays;
*/
public class ThreadPoolConfigService implements ConfigService {
+ private final HttpAgent httpAgent;
+
private final ClientWorker clientWorker;
- public ThreadPoolConfigService() {
- clientWorker = new ClientWorker();
+ public ThreadPoolConfigService(DynamicThreadPoolProperties properties) {
+ httpAgent = new ServerHttpAgent(properties);
+ clientWorker = new ClientWorker(httpAgent);
}
@Override
diff --git a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/core/ThreadPoolDynamicRefresh.java b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/core/ThreadPoolDynamicRefresh.java
index e6c072a2..dfb993a7 100644
--- a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/core/ThreadPoolDynamicRefresh.java
+++ b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/core/ThreadPoolDynamicRefresh.java
@@ -15,9 +15,9 @@ import java.util.concurrent.TimeUnit;
*/
public class ThreadPoolDynamicRefresh {
- public static void refreshDynamicPool(String tpId, String content) {
+ public static void refreshDynamicPool(String content) {
PoolParameterInfo parameter = JSON.parseObject(content, PoolParameterInfo.class);
- refreshDynamicPool(tpId, parameter.getCoreSize(), parameter.getMaxSize(), parameter.getCapacity(), parameter.getKeepAliveTime());
+ refreshDynamicPool(parameter.getTpId(), parameter.getCoreSize(), parameter.getMaxSize(), parameter.getCapacity(), parameter.getKeepAliveTime());
}
public static void refreshDynamicPool(String threadPoolId, Integer coreSize, Integer maxSize, Integer capacity, Integer keepAliveTime) {
diff --git a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/core/ThreadPoolRunListener.java b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/core/ThreadPoolRunListener.java
index ba942fa8..5207d1b4 100644
--- a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/core/ThreadPoolRunListener.java
+++ b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/core/ThreadPoolRunListener.java
@@ -11,7 +11,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
-import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.BlockingQueue;
@@ -29,8 +28,11 @@ public class ThreadPoolRunListener implements ApplicationRunner {
@Autowired
private HttpClientUtil httpClientUtil;
- @Resource
- private DynamicThreadPoolProperties dynamicThreadPoolProperties;
+ private final DynamicThreadPoolProperties dynamicThreadPoolProperties;
+
+ public ThreadPoolRunListener(DynamicThreadPoolProperties properties) {
+ this.dynamicThreadPoolProperties = properties;
+ }
@Override
public void run(ApplicationArguments args) throws Exception {
diff --git a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/http/HttpAgent.java b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/http/HttpAgent.java
new file mode 100644
index 00000000..764b9c7d
--- /dev/null
+++ b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/http/HttpAgent.java
@@ -0,0 +1,70 @@
+package io.dynamic.threadpool.starter.http;
+
+import java.util.Map;
+
+/**
+ * Http Agent.
+ *
+ * @author chen.ma
+ * @date 2021/6/23 20:45
+ */
+public interface HttpAgent {
+
+ /**
+ * 开始获取 NacosIp 集合
+ */
+ void start();
+
+ /**
+ * 获取命名空间
+ *
+ * @return
+ */
+ String getNameSpace();
+
+ /**
+ * 获取编码集
+ *
+ * @return
+ */
+ String getEncode();
+
+ /**
+ * 发起 Http Get 请求
+ *
+ * @param path
+ * @param headers
+ * @param paramValues
+ * @param encoding
+ * @param readTimeoutMs
+ * @return
+ */
+ String httpGet(String path, Map headers, Map paramValues,
+ String encoding, long readTimeoutMs);
+
+ /**
+ * 发起 Http Post 请求
+ *
+ * @param path
+ * @param headers
+ * @param paramValues
+ * @param encoding
+ * @param readTimeoutMs
+ * @return
+ */
+ String httpPost(String path, Map headers, Map paramValues,
+ String encoding, long readTimeoutMs);
+
+ /**
+ * 发起 Http Delete 请求
+ *
+ * @param path
+ * @param headers
+ * @param paramValues
+ * @param encoding
+ * @param readTimeoutMs
+ * @return
+ */
+ String httpDelete(String path, Map headers, Map paramValues,
+ String encoding, long readTimeoutMs);
+}
diff --git a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/http/ServerHttpAgent.java b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/http/ServerHttpAgent.java
new file mode 100644
index 00000000..dbd3b735
--- /dev/null
+++ b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/http/ServerHttpAgent.java
@@ -0,0 +1,50 @@
+package io.dynamic.threadpool.starter.http;
+
+import io.dynamic.threadpool.starter.config.DynamicThreadPoolProperties;
+
+import java.util.Map;
+
+/**
+ * Server Http Agent.
+ *
+ * @author chen.ma
+ * @date 2021/6/23 20:50
+ */
+public class ServerHttpAgent implements HttpAgent {
+
+ private final DynamicThreadPoolProperties dynamicThreadPoolProperties;
+
+ public ServerHttpAgent(DynamicThreadPoolProperties properties) {
+ this.dynamicThreadPoolProperties = properties;
+ }
+
+ @Override
+ public void start() {
+
+ }
+
+ @Override
+ public String httpGet(String path, Map headers, Map paramValues, String encoding, long readTimeoutMs) {
+ return null;
+ }
+
+ @Override
+ public String httpPost(String path, Map headers, Map paramValues, String encoding, long readTimeoutMs) {
+ return null;
+ }
+
+ @Override
+ public String httpDelete(String path, Map headers, Map paramValues, String encoding, long readTimeoutMs) {
+ return null;
+ }
+
+ @Override
+ public String getNameSpace() {
+ return null;
+ }
+
+ @Override
+ public String getEncode() {
+ return null;
+ }
+}
diff --git a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/http/ServerListManager.java b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/http/ServerListManager.java
new file mode 100644
index 00000000..dd0ca51d
--- /dev/null
+++ b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/http/ServerListManager.java
@@ -0,0 +1,13 @@
+package io.dynamic.threadpool.starter.http;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * Server List Manager.
+ *
+ * @author chen.ma
+ * @date 2021/6/23 20:42
+ */
+@Slf4j
+public class ServerListManager {
+}
diff --git a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/listener/ClientWorker.java b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/listener/ClientWorker.java
index 6fff2d44..76c070b5 100644
--- a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/listener/ClientWorker.java
+++ b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/listener/ClientWorker.java
@@ -1,6 +1,7 @@
package io.dynamic.threadpool.starter.listener;
import io.dynamic.threadpool.starter.core.CacheData;
+import io.dynamic.threadpool.starter.http.HttpAgent;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.CollectionUtils;
@@ -22,6 +23,8 @@ public class ClientWorker {
private double currentLongingTaskCount = 0;
+ private final HttpAgent agent;
+
private final ScheduledExecutorService executor;
private final ScheduledExecutorService executorService;
@@ -29,7 +32,9 @@ public class ClientWorker {
private final ConcurrentHashMap cacheMap = new ConcurrentHashMap(16);
@SuppressWarnings("all")
- public ClientWorker() {
+ public ClientWorker(HttpAgent httpAgent) {
+ this.agent = httpAgent;
+
this.executor = Executors.newScheduledThreadPool(1, r -> {
Thread t = new Thread(r);
t.setName("io.dynamic.threadPool.client.Worker.executor");
@@ -111,7 +116,6 @@ public class ClientWorker {
for (CacheData each : cacheDataList) {
each.checkListenerMd5();
}
-
}
}
diff --git a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/operation/ThreadPoolOperation.java b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/operation/ThreadPoolOperation.java
index 33cca1f0..6b07aa2c 100644
--- a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/operation/ThreadPoolOperation.java
+++ b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/operation/ThreadPoolOperation.java
@@ -21,7 +21,7 @@ public class ThreadPoolOperation {
Listener configListener = new Listener() {
@Override
public void receiveConfigInfo(String config) {
- threadPoolSubscribeCallback.callback(tpId, config);
+ threadPoolSubscribeCallback.callback(config);
}
@Override
diff --git a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/operation/ThreadPoolSubscribeCallback.java b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/operation/ThreadPoolSubscribeCallback.java
index ea4de466..904adfb1 100644
--- a/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/operation/ThreadPoolSubscribeCallback.java
+++ b/dynamic-threadpool-spring-boot-starter/src/main/java/io/dynamic/threadpool/starter/operation/ThreadPoolSubscribeCallback.java
@@ -11,8 +11,7 @@ public interface ThreadPoolSubscribeCallback {
/**
* 回调函数
*
- * @param tpId
* @param config
*/
- void callback(String tpId, String config);
+ void callback(String config);
}
diff --git a/dynamic-threadpool-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/dynamic-threadpool-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
new file mode 100644
index 00000000..109c9359
--- /dev/null
+++ b/dynamic-threadpool-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
@@ -0,0 +1,27 @@
+{
+ "properties": [
+ {
+ "name": "spring.dynamic.thread-pool.server-addr",
+ "type": "java.lang.String",
+ "defaultValue": "localhost:6691",
+ "description": "dynamic thread-pool server address."
+ },
+ {
+ "name": "spring.dynamic.thread-pool.enabled",
+ "type": "java.lang.Boolean",
+ "defaultValue": false,
+ "description": "dynamic thread-pool enabled."
+ },
+ {
+ "name": "spring.dynamic.thread-pool.namespace",
+ "type": "java.lang.String",
+ "defaultValue": "public",
+ "description": "dynamic thread-pool namespace."
+ },
+ {
+ "name": "spring.dynamic.thread-pool.item-id",
+ "type": "java.lang.String",
+ "description": "dynamic thread-pool item-id."
+ }
+ ]
+}
\ No newline at end of file
diff --git a/example/pom.xml b/example/pom.xml
index 65b239c0..f50dc95a 100644
--- a/example/pom.xml
+++ b/example/pom.xml
@@ -6,7 +6,7 @@
io.dynamic-threadpool
parent
- ${revision}
+ 1.0.0-SNAPSHOT
dynamic-threadpool-example
@@ -39,7 +39,7 @@
io.dynamic-threadpool
dynamic-threadpool-spring-boot-starter
- ${revision}
+ 1.0.0-SNAPSHOT
diff --git a/example/src/main/resources/application.yaml b/example/src/main/resources/application.yaml
index 2d9c745c..27eb56e8 100644
--- a/example/src/main/resources/application.yaml
+++ b/example/src/main/resources/application.yaml
@@ -1,5 +1,7 @@
spring:
- threadpool:
- dynamic:
- namespace: common
- itemId: message-center
+ dynamic:
+ thread-pool:
+ enabled: true
+ server-addr: localhost:6691
+ namespace: public
+ item-id: message-center
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 3a0240b3..3fb3e1af 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,11 +5,11 @@
io.dynamic-threadpool
parent
- ${revision}
+ 1.0.0-SNAPSHOT
pom
${project.artifactId}
- 动态线程池,附带监控报警功能
+ 🔥 强大的动态线程池,附带监控报警功能
1.8
@@ -24,6 +24,7 @@
+ common
server
example
dynamic-threadpool-spring-boot-starter
@@ -67,7 +68,7 @@
io.dynamic-threadpool
common
- ${revision}
+ 1.0.0-SNAPSHOT
@@ -80,6 +81,19 @@
+
+
+ release_user
+ Release Deploy
+ http://localhost:8081/repository/maven-releases/
+
+
+ snapshot_user
+ Snapshot Deploy
+ http://localhost:8081/repository/maven-snapshots/
+
+
+
@@ -87,6 +101,32 @@
spring-boot-maven-plugin
+
+
org.apache.maven.plugins
maven-compiler-plugin
diff --git a/server/pom.xml b/server/pom.xml
index 78b99d27..e4828d37 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -6,7 +6,7 @@
io.dynamic-threadpool
parent
- ${revision}
+ 1.0.0-SNAPSHOT
dynamic-threadpool-server