diff --git a/powerjob-server/pom.xml b/powerjob-server/pom.xml
index 805fe777..675cacc0 100644
--- a/powerjob-server/pom.xml
+++ b/powerjob-server/pom.xml
@@ -16,6 +16,7 @@
powerjob-server-remote
powerjob-server-persistence
powerjob-server-starter
+ powerjob-server-extension
pom
@@ -47,12 +48,17 @@
tech.powerjob
- powerjob-server-remote
+ powerjob-server-common
1.0.0
tech.powerjob
- powerjob-server-common
+ powerjob-server-extension
+ 1.0.0
+
+
+ tech.powerjob
+ powerjob-server-remote
1.0.0
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/Alarm.java b/powerjob-server/powerjob-server-common/src/main/java/tech/powerjob/server/common/module/Alarm.java
similarity index 96%
rename from powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/Alarm.java
rename to powerjob-server/powerjob-server-common/src/main/java/tech/powerjob/server/common/module/Alarm.java
index 6a29ca4d..58e6a93e 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/Alarm.java
+++ b/powerjob-server/powerjob-server-common/src/main/java/tech/powerjob/server/common/module/Alarm.java
@@ -1,4 +1,4 @@
-package tech.powerjob.server.service.alarm;
+package tech.powerjob.server.common.module;
import com.alibaba.fastjson.JSONObject;
import com.github.kfcfans.powerjob.common.OmsConstant;
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/WorkerInfo.java b/powerjob-server/powerjob-server-common/src/main/java/tech/powerjob/server/common/module/WorkerInfo.java
similarity index 95%
rename from powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/WorkerInfo.java
rename to powerjob-server/powerjob-server-common/src/main/java/tech/powerjob/server/common/module/WorkerInfo.java
index a19263f4..7e271b25 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/WorkerInfo.java
+++ b/powerjob-server/powerjob-server-common/src/main/java/tech/powerjob/server/common/module/WorkerInfo.java
@@ -1,4 +1,4 @@
-package tech.powerjob.server.remote.worker.cluster;
+package tech.powerjob.server.common.module;
import com.github.kfcfans.powerjob.common.model.DeployedContainerInfo;
import com.github.kfcfans.powerjob.common.model.SystemMetrics;
diff --git a/powerjob-server/powerjob-server-extension/pom.xml b/powerjob-server/powerjob-server-extension/pom.xml
new file mode 100644
index 00000000..dedd4834
--- /dev/null
+++ b/powerjob-server/powerjob-server-extension/pom.xml
@@ -0,0 +1,28 @@
+
+
+
+ powerjob-server
+ com.github.kfcfans
+ 3.4.6
+
+ 4.0.0
+
+ tech.powerjob
+ powerjob-server-extension
+ 1.0.0
+
+
+ 8
+ 8
+
+
+
+
+ tech.powerjob
+ powerjob-server-persistence
+
+
+
+
\ No newline at end of file
diff --git a/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/Alarmable.java b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/Alarmable.java
new file mode 100644
index 00000000..312d0240
--- /dev/null
+++ b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/Alarmable.java
@@ -0,0 +1,17 @@
+package tech.powerjob.server.extension;
+
+import tech.powerjob.server.persistence.core.model.UserInfoDO;
+import tech.powerjob.server.common.module.Alarm;
+
+import java.util.List;
+
+/**
+ * 报警接口
+ *
+ * @author tjq
+ * @since 2020/4/19
+ */
+public interface Alarmable {
+
+ void onFailed(Alarm alarm, List targetUserList);
+}
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/extension/LockService.java b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/LockService.java
similarity index 100%
rename from powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/extension/LockService.java
rename to powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/LockService.java
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/extension/WorkerFilter.java b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/WorkerFilter.java
similarity index 89%
rename from powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/extension/WorkerFilter.java
rename to powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/WorkerFilter.java
index 374ddf0b..54859813 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/extension/WorkerFilter.java
+++ b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/WorkerFilter.java
@@ -1,7 +1,7 @@
package tech.powerjob.server.extension;
import tech.powerjob.server.persistence.core.model.JobInfoDO;
-import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
+import tech.powerjob.server.common.module.WorkerInfo;
/**
* filter worker by system metrics or other info
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/lock/DatabaseLockService.java b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/DatabaseLockService.java
similarity index 98%
rename from powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/lock/DatabaseLockService.java
rename to powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/DatabaseLockService.java
index 9dd7f3b1..f7da69e1 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/lock/DatabaseLockService.java
+++ b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/DatabaseLockService.java
@@ -1,4 +1,4 @@
-package tech.powerjob.server.service.lock;
+package tech.powerjob.server.extension.impl;
import com.github.kfcfans.powerjob.common.utils.CommonUtils;
import com.github.kfcfans.powerjob.common.utils.NetUtils;
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/impl/DingTalkAlarmService.java b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/alram/DingTalkAlarmService.java
similarity index 96%
rename from powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/impl/DingTalkAlarmService.java
rename to powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/alram/DingTalkAlarmService.java
index 6e9eeac5..668d7edb 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/impl/DingTalkAlarmService.java
+++ b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/alram/DingTalkAlarmService.java
@@ -1,13 +1,13 @@
-package tech.powerjob.server.service.alarm.impl;
+package tech.powerjob.server.extension.impl.alram;
import com.github.kfcfans.powerjob.common.OmsConstant;
import com.github.kfcfans.powerjob.common.PowerJobException;
import com.github.kfcfans.powerjob.common.utils.NetUtils;
import tech.powerjob.server.common.PowerJobServerConfigKey;
import tech.powerjob.server.common.SJ;
-import tech.powerjob.server.common.utils.DingTalkUtils;
+import tech.powerjob.server.extension.impl.alram.DingTalkUtils;
import tech.powerjob.server.persistence.core.model.UserInfoDO;
-import tech.powerjob.server.service.alarm.Alarm;
+import tech.powerjob.server.common.module.Alarm;
import tech.powerjob.server.extension.Alarmable;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/common/utils/DingTalkUtils.java b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/alram/DingTalkUtils.java
similarity index 99%
rename from powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/common/utils/DingTalkUtils.java
rename to powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/alram/DingTalkUtils.java
index 8253bf8e..db60ac3d 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/common/utils/DingTalkUtils.java
+++ b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/alram/DingTalkUtils.java
@@ -1,4 +1,4 @@
-package tech.powerjob.server.common.utils;
+package tech.powerjob.server.extension.impl.alram;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/impl/MailAlarmService.java b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/alram/MailAlarmService.java
similarity index 95%
rename from powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/impl/MailAlarmService.java
rename to powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/alram/MailAlarmService.java
index afb0d838..ab9fe5ce 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/impl/MailAlarmService.java
+++ b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/alram/MailAlarmService.java
@@ -1,7 +1,7 @@
-package tech.powerjob.server.service.alarm.impl;
+package tech.powerjob.server.extension.impl.alram;
import tech.powerjob.server.persistence.core.model.UserInfoDO;
-import tech.powerjob.server.service.alarm.Alarm;
+import tech.powerjob.server.common.module.Alarm;
import tech.powerjob.server.extension.Alarmable;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/impl/WebHookAlarmService.java b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/alram/WebHookAlarmService.java
similarity index 95%
rename from powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/impl/WebHookAlarmService.java
rename to powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/alram/WebHookAlarmService.java
index 5da1125d..216d5bad 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/impl/WebHookAlarmService.java
+++ b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/alram/WebHookAlarmService.java
@@ -1,10 +1,10 @@
-package tech.powerjob.server.service.alarm.impl;
+package tech.powerjob.server.extension.impl.alram;
import com.alibaba.fastjson.JSONObject;
import com.github.kfcfans.powerjob.common.OmsConstant;
import com.github.kfcfans.powerjob.common.utils.HttpUtils;
import tech.powerjob.server.persistence.core.model.UserInfoDO;
-import tech.powerjob.server.service.alarm.Alarm;
+import tech.powerjob.server.common.module.Alarm;
import tech.powerjob.server.extension.Alarmable;
import lombok.extern.slf4j.Slf4j;
import okhttp3.MediaType;
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/filter/DesignatedWorkerFilter.java b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/workerfilter/DesignatedWorkerFilter.java
similarity index 89%
rename from powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/filter/DesignatedWorkerFilter.java
rename to powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/workerfilter/DesignatedWorkerFilter.java
index 69fa8b62..cee11cfb 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/filter/DesignatedWorkerFilter.java
+++ b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/workerfilter/DesignatedWorkerFilter.java
@@ -1,9 +1,9 @@
-package tech.powerjob.server.remote.worker.cluster.filter;
+package tech.powerjob.server.extension.impl.workerfilter;
import tech.powerjob.server.common.SJ;
import tech.powerjob.server.extension.WorkerFilter;
import tech.powerjob.server.persistence.core.model.JobInfoDO;
-import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
+import tech.powerjob.server.common.module.WorkerInfo;
import com.google.common.collect.Sets;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/filter/DisconnectedWorkerFilter.java b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/workerfilter/DisconnectedWorkerFilter.java
similarity index 85%
rename from powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/filter/DisconnectedWorkerFilter.java
rename to powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/workerfilter/DisconnectedWorkerFilter.java
index 62b88101..6085ae38 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/filter/DisconnectedWorkerFilter.java
+++ b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/workerfilter/DisconnectedWorkerFilter.java
@@ -1,8 +1,8 @@
-package tech.powerjob.server.remote.worker.cluster.filter;
+package tech.powerjob.server.extension.impl.workerfilter;
import tech.powerjob.server.extension.WorkerFilter;
import tech.powerjob.server.persistence.core.model.JobInfoDO;
-import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
+import tech.powerjob.server.common.module.WorkerInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/filter/SystemMetricsWorkerFilter.java b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/workerfilter/SystemMetricsWorkerFilter.java
similarity index 88%
rename from powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/filter/SystemMetricsWorkerFilter.java
rename to powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/workerfilter/SystemMetricsWorkerFilter.java
index 271447d3..bd624cbd 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/filter/SystemMetricsWorkerFilter.java
+++ b/powerjob-server/powerjob-server-extension/src/main/java/tech/powerjob/server/extension/impl/workerfilter/SystemMetricsWorkerFilter.java
@@ -1,9 +1,9 @@
-package tech.powerjob.server.remote.worker.cluster.filter;
+package tech.powerjob.server.extension.impl.workerfilter;
import com.github.kfcfans.powerjob.common.model.SystemMetrics;
import tech.powerjob.server.extension.WorkerFilter;
import tech.powerjob.server.persistence.core.model.JobInfoDO;
-import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
+import tech.powerjob.server.common.module.WorkerInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
diff --git a/powerjob-server/powerjob-server-remote/pom.xml b/powerjob-server/powerjob-server-remote/pom.xml
index b18d379f..3258319a 100644
--- a/powerjob-server/powerjob-server-remote/pom.xml
+++ b/powerjob-server/powerjob-server-remote/pom.xml
@@ -23,6 +23,10 @@
tech.powerjob
powerjob-server-common
+
+ tech.powerjob
+ powerjob-server-extension
+
tech.powerjob
powerjob-server-persistence
diff --git a/powerjob-server/powerjob-server-starter/pom.xml b/powerjob-server/powerjob-server-starter/pom.xml
index 7731e723..0d61a652 100644
--- a/powerjob-server/powerjob-server-starter/pom.xml
+++ b/powerjob-server/powerjob-server-starter/pom.xml
@@ -19,6 +19,10 @@
+
+ tech.powerjob
+ powerjob-server-extension
+
tech.powerjob
powerjob-server-remote
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/extension/Alarmable.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/extension/Alarmable.java
deleted file mode 100644
index cf52e850..00000000
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/extension/Alarmable.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package tech.powerjob.server.extension;
-
-import tech.powerjob.server.persistence.core.model.UserInfoDO;
-import tech.powerjob.server.service.alarm.Alarm;
-import tech.powerjob.server.service.alarm.AlarmCenter;
-import org.springframework.beans.factory.InitializingBean;
-
-import java.util.List;
-
-/**
- * 报警接口
- *
- * @author tjq
- * @since 2020/4/19
- */
-public interface Alarmable extends InitializingBean {
-
- void onFailed(Alarm alarm, List targetUserList);
-
- @Override
- default void afterPropertiesSet() throws Exception {
- AlarmCenter.register(this);
- }
-}
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/extension/ServerElectionService.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/extension/ServerElectionService.java
deleted file mode 100644
index f9059312..00000000
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/extension/ServerElectionService.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package tech.powerjob.server.extension;
-
-/**
- * 调度服务器选举服务,默认实现为先到先得,可自行接入 Zookeeper 等实现"负载均衡"策略
- *
- * @author tjq
- * @since 2021/2/9
- */
-public interface ServerElectionService {
-
- String elect(Long appId, String protocol, String currentServer);
-}
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/DispatchService.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/DispatchService.java
index 9c8f6675..8ff1d31c 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/DispatchService.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/DispatchService.java
@@ -8,7 +8,7 @@ import tech.powerjob.server.persistence.core.model.JobInfoDO;
import tech.powerjob.server.persistence.core.repository.InstanceInfoRepository;
import tech.powerjob.server.remote.transport.TransportService;
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
-import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
+import tech.powerjob.server.common.module.WorkerInfo;
import tech.powerjob.server.service.instance.InstanceManager;
import tech.powerjob.server.service.instance.InstanceMetadataService;
import tech.powerjob.server.service.lock.local.UseSegmentLock;
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/server/election/DefaultServerElectionService.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/server/election/ServerElectionService.java
similarity index 97%
rename from powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/server/election/DefaultServerElectionService.java
rename to powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/server/election/ServerElectionService.java
index 5ae92625..c5c175e2 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/server/election/DefaultServerElectionService.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/server/election/ServerElectionService.java
@@ -8,7 +8,6 @@ import com.github.kfcfans.powerjob.common.Protocol;
import com.github.kfcfans.powerjob.common.response.AskResponse;
import com.github.kfcfans.powerjob.common.utils.JsonUtils;
import tech.powerjob.server.extension.LockService;
-import tech.powerjob.server.extension.ServerElectionService;
import tech.powerjob.server.persistence.core.model.AppInfoDO;
import tech.powerjob.server.persistence.core.repository.AppInfoRepository;
import tech.powerjob.server.remote.transport.TransportService;
@@ -36,7 +35,7 @@ import java.util.concurrent.TimeUnit;
*/
@Slf4j
@Service
-public class DefaultServerElectionService implements ServerElectionService {
+public class ServerElectionService {
@Resource
private LockService lockService;
@@ -52,7 +51,6 @@ public class DefaultServerElectionService implements ServerElectionService {
private static final long PING_TIMEOUT_MS = 1000;
private static final String SERVER_ELECT_LOCK = "server_elect_%d";
- @Override
public String elect(Long appId, String protocol, String currentServer) {
if (!accurate()) {
// 如果是本机,就不需要查数据库那么复杂的操作了,直接返回成功
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/ClusterStatusHolder.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/ClusterStatusHolder.java
index 24a6cf08..fa55b439 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/ClusterStatusHolder.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/ClusterStatusHolder.java
@@ -6,6 +6,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.CollectionUtils;
+import tech.powerjob.server.common.module.WorkerInfo;
import java.util.Collections;
import java.util.List;
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/WorkerClusterQueryService.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/WorkerClusterQueryService.java
index 2c01c875..17c3337c 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/WorkerClusterQueryService.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/cluster/WorkerClusterQueryService.java
@@ -1,6 +1,7 @@
package tech.powerjob.server.remote.worker.cluster;
import com.github.kfcfans.powerjob.common.model.DeployedContainerInfo;
+import tech.powerjob.server.common.module.WorkerInfo;
import tech.powerjob.server.extension.WorkerFilter;
import tech.powerjob.server.persistence.core.model.JobInfoDO;
import tech.powerjob.server.remote.server.redirector.DesignateServer;
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/handler/WorkerRequestHandler.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/handler/WorkerRequestHandler.java
index eb232a0c..1590b995 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/handler/WorkerRequestHandler.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/remote/worker/handler/WorkerRequestHandler.java
@@ -2,7 +2,7 @@ package tech.powerjob.server.remote.worker.handler;
import com.github.kfcfans.powerjob.common.InstanceStatus;
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
-import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
+import tech.powerjob.server.common.module.WorkerInfo;
import com.github.kfcfans.powerjob.common.request.*;
import com.github.kfcfans.powerjob.common.response.AskResponse;
import com.github.kfcfans.powerjob.common.utils.JsonUtils;
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/ContainerService.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/ContainerService.java
index fdc3eec2..218e5d29 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/ContainerService.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/ContainerService.java
@@ -19,7 +19,7 @@ import tech.powerjob.server.persistence.core.repository.ContainerInfoRepository;
import tech.powerjob.server.persistence.mongodb.GridFsManager;
import tech.powerjob.server.remote.transport.starter.AkkaStarter;
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
-import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
+import tech.powerjob.server.common.module.WorkerInfo;
import tech.powerjob.server.web.request.SaveContainerInfoRequest;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Lists;
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/AlarmCenter.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/AlarmCenter.java
index 8e7ce3c0..94f0d216 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/AlarmCenter.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/AlarmCenter.java
@@ -1,5 +1,8 @@
package tech.powerjob.server.service.alarm;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import tech.powerjob.server.common.module.Alarm;
import tech.powerjob.server.extension.Alarmable;
import tech.powerjob.server.persistence.core.model.UserInfoDO;
import com.google.common.collect.Lists;
@@ -17,20 +20,25 @@ import java.util.concurrent.*;
* @since 2020/4/19
*/
@Slf4j
+@Component
public class AlarmCenter {
- private static final ExecutorService POOL;
- private static final List BEANS = Lists.newLinkedList();
- private static final int THREAD_KEEP_ALIVE_TIME_M = 5;
+ private final ExecutorService POOL;
+ private final List BEANS = Lists.newLinkedList();
- static {
+ @Autowired
+ public AlarmCenter(List alarmables) {
int cores = Runtime.getRuntime().availableProcessors();
ThreadFactory factory = new ThreadFactoryBuilder().setNameFormat("AlarmPool-%d").build();
- POOL = new ThreadPoolExecutor(cores, cores, THREAD_KEEP_ALIVE_TIME_M, TimeUnit.MINUTES, Queues.newLinkedBlockingQueue(), factory);
+ POOL = new ThreadPoolExecutor(cores, cores, 5, TimeUnit.MINUTES, Queues.newLinkedBlockingQueue(), factory);
+
+ alarmables.forEach(bean -> {
+ BEANS.add(bean);
+ log.info("[AlarmCenter] bean(className={},obj={}) register to AlarmCenter successfully!", bean.getClass().getName(), bean);
+ });
}
-
- public static void alarmFailed(Alarm alarm, List targetUserList) {
+ public void alarmFailed(Alarm alarm, List targetUserList) {
POOL.execute(() -> BEANS.forEach(alarmable -> {
try {
alarmable.onFailed(alarm, targetUserList);
@@ -39,9 +47,4 @@ public class AlarmCenter {
}
}));
}
-
- public static void register(Alarmable alarmable) {
- BEANS.add(alarmable);
- log.info("[AlarmCenter] bean(className={},obj={}) register to AlarmCenter successfully!", alarmable.getClass().getName(), alarmable);
- }
}
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/JobInstanceAlarm.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/JobInstanceAlarm.java
index e4cd8f27..81e7eb48 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/JobInstanceAlarm.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/JobInstanceAlarm.java
@@ -1,6 +1,7 @@
package tech.powerjob.server.service.alarm;
import lombok.Data;
+import tech.powerjob.server.common.module.Alarm;
/**
* 任务执行失败告警对象
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/WorkflowInstanceAlarm.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/WorkflowInstanceAlarm.java
index f01b658b..1d3f0e89 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/WorkflowInstanceAlarm.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/alarm/WorkflowInstanceAlarm.java
@@ -2,6 +2,7 @@ package tech.powerjob.server.service.alarm;
import com.github.kfcfans.powerjob.common.model.PEWorkflowDAG;
import lombok.Data;
+import tech.powerjob.server.common.module.Alarm;
/**
* 工作流执行失败告警对象
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/instance/InstanceManager.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/instance/InstanceManager.java
index a1353642..48960819 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/instance/InstanceManager.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/instance/InstanceManager.java
@@ -35,6 +35,8 @@ import java.util.concurrent.TimeUnit;
@Service
public class InstanceManager {
+ @Resource
+ private AlarmCenter alarmCenter;
@Resource
private DispatchService dispatchService;
@Resource
@@ -179,7 +181,7 @@ public class InstanceManager {
}
List userList = SpringUtils.getBean(UserService.class).fetchNotifyUserList(jobInfo.getNotifyUserIds());
- AlarmCenter.alarmFailed(content, userList);
+ alarmCenter.alarmFailed(content, userList);
}
// 主动移除缓存,减小内存占用
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/instance/InstanceService.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/instance/InstanceService.java
index 49b3e48d..49c9b393 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/instance/InstanceService.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/instance/InstanceService.java
@@ -17,7 +17,7 @@ import tech.powerjob.server.remote.DispatchService;
import tech.powerjob.server.remote.server.redirector.DesignateServer;
import tech.powerjob.server.remote.transport.TransportService;
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
-import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
+import tech.powerjob.server.common.module.WorkerInfo;
import tech.powerjob.server.service.id.IdGenerateService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/workflow/WorkflowInstanceManager.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/workflow/WorkflowInstanceManager.java
index 52ac2ee4..5a2be1df 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/workflow/WorkflowInstanceManager.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/service/workflow/WorkflowInstanceManager.java
@@ -44,6 +44,8 @@ import static tech.powerjob.server.common.utils.WorkflowDAGUtils.isNotAllowSkipW
@SuppressWarnings("squid:S1192")
public class WorkflowInstanceManager {
+ @Resource
+ private AlarmCenter alarmCenter;
@Resource
private InstanceService instanceService;
@Resource
@@ -453,7 +455,7 @@ public class WorkflowInstanceManager {
content.setResult(result);
List userList = userService.fetchNotifyUserList(wfInfo.getNotifyUserIds());
- AlarmCenter.alarmFailed(content, userList);
+ alarmCenter.alarmFailed(content, userList);
});
} catch (Exception ignore) {
// ignore
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/ServerController.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/ServerController.java
index fc5109d3..0b67e38f 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/ServerController.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/ServerController.java
@@ -5,9 +5,9 @@ import com.alibaba.fastjson.JSONObject;
import com.github.kfcfans.powerjob.common.response.ResultDTO;
import com.github.kfcfans.powerjob.common.utils.CommonUtils;
import com.github.kfcfans.powerjob.common.utils.NetUtils;
-import tech.powerjob.server.extension.ServerElectionService;
import tech.powerjob.server.persistence.core.model.AppInfoDO;
import tech.powerjob.server.persistence.core.repository.AppInfoRepository;
+import tech.powerjob.server.remote.server.election.ServerElectionService;
import tech.powerjob.server.remote.transport.TransportService;
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
import org.springframework.web.bind.annotation.GetMapping;
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/SystemInfoController.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/SystemInfoController.java
index ff806059..70ad03a5 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/SystemInfoController.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/SystemInfoController.java
@@ -7,7 +7,7 @@ import tech.powerjob.server.common.constants.SwitchableStatus;
import tech.powerjob.server.persistence.core.repository.InstanceInfoRepository;
import tech.powerjob.server.persistence.core.repository.JobInfoRepository;
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
-import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
+import tech.powerjob.server.common.module.WorkerInfo;
import tech.powerjob.server.web.response.SystemOverviewVO;
import tech.powerjob.server.web.response.WorkerStatusVO;
import lombok.extern.slf4j.Slf4j;
diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/WorkerStatusVO.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/WorkerStatusVO.java
index 42b0bd42..9a1cbc24 100644
--- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/WorkerStatusVO.java
+++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/response/WorkerStatusVO.java
@@ -1,7 +1,7 @@
package tech.powerjob.server.web.response;
import com.github.kfcfans.powerjob.common.model.SystemMetrics;
-import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
+import tech.powerjob.server.common.module.WorkerInfo;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/powerjob-server/powerjob-server-starter/src/test/java/tech/powerjob/server/test/DingTalkTest.java b/powerjob-server/powerjob-server-starter/src/test/java/tech/powerjob/server/test/DingTalkTest.java
index c237893a..8d5bc05a 100644
--- a/powerjob-server/powerjob-server-starter/src/test/java/tech/powerjob/server/test/DingTalkTest.java
+++ b/powerjob-server/powerjob-server-starter/src/test/java/tech/powerjob/server/test/DingTalkTest.java
@@ -1,6 +1,6 @@
package tech.powerjob.server.test;
-import tech.powerjob.server.common.utils.DingTalkUtils;
+import tech.powerjob.server.extension.impl.alram.DingTalkUtils;
import com.google.common.collect.Lists;
import org.junit.jupiter.api.Test;