diff --git a/powerjob-client/pom.xml b/powerjob-client/pom.xml
index 76a28752..1638d059 100644
--- a/powerjob-client/pom.xml
+++ b/powerjob-client/pom.xml
@@ -10,20 +10,37 @@
4.0.0
powerjob-client
- 3.3.0
+ 3.3.1
jar
- 3.3.0
5.6.1
+ 1.2.68
+ 3.3.1
+
+ 3.2.4
+
+
+
+ com.alibaba
+ fastjson
+ ${fastjson.version}
+
+
com.github.kfcfans
powerjob-common
${powerjob.common.version}
+
+
+ com.typesafe.akka
+ *
+
+
@@ -35,4 +52,47 @@
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ ${mvn.shade.plugin.version}
+
+ false
+
+
+ okhttp3
+ shade.powerjob.okhttp3
+
+
+ okio
+ shade.powerjob.okio
+
+
+ com.google
+ shade.powerjob.com.google
+
+
+ org.apache
+ shade.powerjob.org.apache
+
+
+ com.alibaba
+ shade.powerjob.com.alibaba
+
+
+
+
+
+ package
+
+ shade
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/powerjob-client/src/main/java/com/github/kfcfans/powerjob/client/OhMyClient.java b/powerjob-client/src/main/java/com/github/kfcfans/powerjob/client/OhMyClient.java
index a2f91a13..cadeb661 100644
--- a/powerjob-client/src/main/java/com/github/kfcfans/powerjob/client/OhMyClient.java
+++ b/powerjob-client/src/main/java/com/github/kfcfans/powerjob/client/OhMyClient.java
@@ -1,5 +1,6 @@
package com.github.kfcfans.powerjob.client;
+import com.alibaba.fastjson.JSONObject;
import com.github.kfcfans.powerjob.common.InstanceStatus;
import com.github.kfcfans.powerjob.common.PowerJobException;
import com.github.kfcfans.powerjob.common.OpenAPIConstant;
@@ -8,7 +9,6 @@ import com.github.kfcfans.powerjob.common.request.http.SaveWorkflowRequest;
import com.github.kfcfans.powerjob.common.response.*;
import com.github.kfcfans.powerjob.common.utils.CommonUtils;
import com.github.kfcfans.powerjob.common.utils.HttpUtils;
-import com.github.kfcfans.powerjob.common.utils.JsonUtils;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import okhttp3.FormBody;
@@ -62,7 +62,7 @@ public class OhMyClient {
try {
String result = assertApp(appName, password, url);
if (StringUtils.isNotEmpty(result)) {
- ResultDTO resultDTO = JsonUtils.parseObject(result, ResultDTO.class);
+ ResultDTO resultDTO = JSONObject.parseObject(result, ResultDTO.class);
if (resultDTO.isSuccess()) {
appId = Long.parseLong(resultDTO.getData().toString());
currentAddress = addr;
@@ -107,9 +107,9 @@ public class OhMyClient {
request.setAppId(appId);
MediaType jsonType = MediaType.parse("application/json; charset=utf-8");
- String json = JsonUtils.toJSONStringUnsafe(request);
+ String json = JSONObject.toJSONString(request);
String post = postHA(OpenAPIConstant.SAVE_JOB, RequestBody.create(jsonType, json));
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
/**
@@ -124,7 +124,7 @@ public class OhMyClient {
.add("appId", appId.toString())
.build();
String post = postHA(OpenAPIConstant.FETCH_JOB, body);
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
/**
@@ -139,7 +139,7 @@ public class OhMyClient {
.add("appId", appId.toString())
.build();
String post = postHA(OpenAPIConstant.DISABLE_JOB, body);
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
/**
@@ -154,7 +154,7 @@ public class OhMyClient {
.add("appId", appId.toString())
.build();
String post = postHA(OpenAPIConstant.ENABLE_JOB, body);
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
/**
@@ -169,7 +169,7 @@ public class OhMyClient {
.add("appId", appId.toString())
.build();
String post = postHA(OpenAPIConstant.DELETE_JOB, body);
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
/**
@@ -190,7 +190,7 @@ public class OhMyClient {
builder.add("instanceParams", instanceParams);
}
String post = postHA(OpenAPIConstant.RUN_JOB, builder.build());
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
public ResultDTO runJob(Long jobId) throws Exception {
return runJob(jobId, null, 0);
@@ -209,7 +209,7 @@ public class OhMyClient {
.add("appId", appId.toString())
.build();
String post = postHA(OpenAPIConstant.STOP_INSTANCE, body);
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
/**
@@ -225,7 +225,7 @@ public class OhMyClient {
.add("appId", appId.toString())
.build();
String post = postHA(OpenAPIConstant.CANCEL_INSTANCE, body);
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
/**
@@ -241,7 +241,7 @@ public class OhMyClient {
.add("appId", appId.toString())
.build();
String post = postHA(OpenAPIConstant.RETRY_INSTANCE, body);
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
/**
@@ -255,7 +255,7 @@ public class OhMyClient {
.add("instanceId", instanceId.toString())
.build();
String post = postHA(OpenAPIConstant.FETCH_INSTANCE_STATUS, body);
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
/**
@@ -269,7 +269,7 @@ public class OhMyClient {
.add("instanceId", instanceId.toString())
.build();
String post = postHA(OpenAPIConstant.FETCH_INSTANCE_INFO, body);
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
/* ************* Workflow 区 ************* */
@@ -282,9 +282,9 @@ public class OhMyClient {
public ResultDTO saveWorkflow(SaveWorkflowRequest request) throws Exception {
request.setAppId(appId);
MediaType jsonType = MediaType.parse("application/json; charset=utf-8");
- String json = JsonUtils.toJSONStringUnsafe(request);
+ String json = JSONObject.toJSONString(request);
String post = postHA(OpenAPIConstant.SAVE_WORKFLOW, RequestBody.create(jsonType, json));
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
/**
@@ -299,7 +299,7 @@ public class OhMyClient {
.add("appId", appId.toString())
.build();
String post = postHA(OpenAPIConstant.FETCH_WORKFLOW, body);
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
/**
@@ -314,7 +314,7 @@ public class OhMyClient {
.add("appId", appId.toString())
.build();
String post = postHA(OpenAPIConstant.DISABLE_WORKFLOW, body);
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
/**
@@ -329,7 +329,7 @@ public class OhMyClient {
.add("appId", appId.toString())
.build();
String post = postHA(OpenAPIConstant.ENABLE_WORKFLOW, body);
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
/**
@@ -344,7 +344,7 @@ public class OhMyClient {
.add("appId", appId.toString())
.build();
String post = postHA(OpenAPIConstant.DELETE_WORKFLOW, body);
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
/**
@@ -364,7 +364,7 @@ public class OhMyClient {
builder.add("initParams", initParams);
}
String post = postHA(OpenAPIConstant.RUN_WORKFLOW, builder.build());
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
public ResultDTO runWorkflow(Long workflowId) throws Exception {
return runWorkflow(workflowId, null, 0);
@@ -383,7 +383,7 @@ public class OhMyClient {
.add("appId", appId.toString())
.build();
String post = postHA(OpenAPIConstant.STOP_WORKFLOW_INSTANCE, body);
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
/**
@@ -398,7 +398,7 @@ public class OhMyClient {
.add("appId", appId.toString())
.build();
String post = postHA(OpenAPIConstant.FETCH_WORKFLOW_INSTANCE_INFO, body);
- return JsonUtils.parseObject(post, ResultDTO.class);
+ return JSONObject.parseObject(post, ResultDTO.class);
}
diff --git a/powerjob-client/src/test/java/TestClient.java b/powerjob-client/src/test/java/TestClient.java
index 5cebd7ac..dd469c99 100644
--- a/powerjob-client/src/test/java/TestClient.java
+++ b/powerjob-client/src/test/java/TestClient.java
@@ -1,3 +1,4 @@
+import com.alibaba.fastjson.JSONObject;
import com.github.kfcfans.powerjob.common.ExecuteType;
import com.github.kfcfans.powerjob.common.ProcessorType;
import com.github.kfcfans.powerjob.common.TimeExpressionType;
@@ -5,7 +6,6 @@ import com.github.kfcfans.powerjob.common.request.http.SaveJobInfoRequest;
import com.github.kfcfans.powerjob.common.response.JobInfoDTO;
import com.github.kfcfans.powerjob.common.response.ResultDTO;
import com.github.kfcfans.powerjob.client.OhMyClient;
-import com.github.kfcfans.powerjob.common.utils.JsonUtils;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -46,13 +46,13 @@ public class TestClient {
newJobInfo.setMinDiskSpace(1.3);
ResultDTO resultDTO = ohMyClient.saveJob(newJobInfo);
- System.out.println(JsonUtils.toJSONString(resultDTO));
+ System.out.println(JSONObject.toJSONString(resultDTO));
}
@Test
public void testFetchJob() throws Exception {
ResultDTO fetchJob = ohMyClient.fetchJob(1L);
- System.out.println(JsonUtils.toJSONStringUnsafe(fetchJob));
+ System.out.println(JSONObject.toJSONString(fetchJob));
}
@Test
@@ -93,21 +93,21 @@ public class TestClient {
@Test
public void testCancelInstanceInTimeWheel() throws Exception {
ResultDTO startRes = ohMyClient.runJob(15L, "start by OhMyClient", 20000);
- System.out.println("runJob result: " + JsonUtils.toJSONString(startRes));
+ System.out.println("runJob result: " + JSONObject.toJSONString(startRes));
ResultDTO cancelRes = ohMyClient.cancelInstance(startRes.getData());
- System.out.println("cancelJob result: " + JsonUtils.toJSONString(cancelRes));
+ System.out.println("cancelJob result: " + JSONObject.toJSONString(cancelRes));
}
@Test
public void testCancelInstanceInDatabase() throws Exception {
ResultDTO startRes = ohMyClient.runJob(15L, "start by OhMyClient", 2000000);
- System.out.println("runJob result: " + JsonUtils.toJSONString(startRes));
+ System.out.println("runJob result: " + JSONObject.toJSONString(startRes));
// 手动重启 server,干掉时间轮中的调度数据
TimeUnit.MINUTES.sleep(1);
ResultDTO cancelRes = ohMyClient.cancelInstance(startRes.getData());
- System.out.println("cancelJob result: " + JsonUtils.toJSONString(cancelRes));
+ System.out.println("cancelJob result: " + JSONObject.toJSONString(cancelRes));
}
@Test
diff --git a/powerjob-client/src/test/java/TestWorkflow.java b/powerjob-client/src/test/java/TestWorkflow.java
index 0e888742..9e04d80e 100644
--- a/powerjob-client/src/test/java/TestWorkflow.java
+++ b/powerjob-client/src/test/java/TestWorkflow.java
@@ -1,3 +1,4 @@
+import com.alibaba.fastjson.JSONObject;
import com.github.kfcfans.powerjob.client.OhMyClient;
import com.github.kfcfans.powerjob.common.ExecuteType;
import com.github.kfcfans.powerjob.common.ProcessorType;
@@ -5,7 +6,6 @@ import com.github.kfcfans.powerjob.common.TimeExpressionType;
import com.github.kfcfans.powerjob.common.model.PEWorkflowDAG;
import com.github.kfcfans.powerjob.common.request.http.SaveJobInfoRequest;
import com.github.kfcfans.powerjob.common.request.http.SaveWorkflowRequest;
-import com.github.kfcfans.powerjob.common.utils.JsonUtils;
import com.google.common.collect.Lists;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -37,7 +37,7 @@ public class TestWorkflow {
base.setProcessorInfo("com.github.kfcfans.powerjob.samples.workflow.WorkflowStandaloneProcessor");
for (int i = 0; i < 5; i++) {
- SaveJobInfoRequest request = JsonUtils.parseObject(JsonUtils.toBytes(base), SaveJobInfoRequest.class);
+ SaveJobInfoRequest request = JSONObject.parseObject(JSONObject.toJSONBytes(base), SaveJobInfoRequest.class);
request.setJobName(request.getJobName() + i);
System.out.println(ohMyClient.saveJob(request));
}
diff --git a/powerjob-common/pom.xml b/powerjob-common/pom.xml
index 947b04b9..3bca0b62 100644
--- a/powerjob-common/pom.xml
+++ b/powerjob-common/pom.xml
@@ -10,7 +10,7 @@
4.0.0
powerjob-common
- 3.3.0
+ 3.3.1
jar
diff --git a/powerjob-common/src/main/java/com/github/kfcfans/powerjob/common/request/WorkerQueryExecutorClusterReq.java b/powerjob-common/src/main/java/com/github/kfcfans/powerjob/common/request/WorkerQueryExecutorClusterReq.java
new file mode 100644
index 00000000..dd72c3c5
--- /dev/null
+++ b/powerjob-common/src/main/java/com/github/kfcfans/powerjob/common/request/WorkerQueryExecutorClusterReq.java
@@ -0,0 +1,20 @@
+package com.github.kfcfans.powerjob.common.request;
+
+import com.github.kfcfans.powerjob.common.OmsSerializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * worker 查询 执行器集群(动态上线需要)
+ *
+ * @author tjq
+ * @since 10/17/20
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class WorkerQueryExecutorClusterReq implements OmsSerializable {
+ private Long appId;
+ private Long jobId;
+}
diff --git a/powerjob-common/src/main/java/com/github/kfcfans/powerjob/common/response/AskResponse.java b/powerjob-common/src/main/java/com/github/kfcfans/powerjob/common/response/AskResponse.java
index 52331437..b6fc9d28 100644
--- a/powerjob-common/src/main/java/com/github/kfcfans/powerjob/common/response/AskResponse.java
+++ b/powerjob-common/src/main/java/com/github/kfcfans/powerjob/common/response/AskResponse.java
@@ -4,6 +4,8 @@ import com.github.kfcfans.powerjob.common.OmsSerializable;
import com.github.kfcfans.powerjob.common.utils.JsonUtils;
import lombok.*;
+import java.nio.charset.StandardCharsets;
+
/**
* Pattens.ask 的响应
@@ -31,7 +33,11 @@ public class AskResponse implements OmsSerializable {
AskResponse r = new AskResponse();
r.success = true;
if (data != null) {
- r.data = JsonUtils.toBytes(data);
+ if (data instanceof String) {
+ r.data = ((String) data).getBytes(StandardCharsets.UTF_8);
+ } else {
+ r.data = JsonUtils.toBytes(data);
+ }
}
return r;
}
diff --git a/powerjob-common/src/main/java/com/github/kfcfans/powerjob/common/utils/JsonUtils.java b/powerjob-common/src/main/java/com/github/kfcfans/powerjob/common/utils/JsonUtils.java
index 3d0a61ae..2e91357f 100644
--- a/powerjob-common/src/main/java/com/github/kfcfans/powerjob/common/utils/JsonUtils.java
+++ b/powerjob-common/src/main/java/com/github/kfcfans/powerjob/common/utils/JsonUtils.java
@@ -2,6 +2,7 @@ package com.github.kfcfans.powerjob.common.utils;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.kfcfans.powerjob.common.PowerJobException;
import org.apache.commons.lang3.exception.ExceptionUtils;
@@ -48,6 +49,10 @@ public class JsonUtils {
return objectMapper.readValue(b, clz);
}
+ public static T parseObject(byte[] b, TypeReference typeReference) throws Exception {
+ return objectMapper.readValue(b, typeReference);
+ }
+
public static T parseObjectUnsafe(String json, Class clz) {
try {
return objectMapper.readValue(json, clz);
diff --git a/powerjob-server/pom.xml b/powerjob-server/pom.xml
index 6b72e369..a5e18322 100644
--- a/powerjob-server/pom.xml
+++ b/powerjob-server/pom.xml
@@ -10,13 +10,13 @@
4.0.0
powerjob-server
- 3.3.0
+ 3.3.1
jar
2.9.2
2.3.4.RELEASE
- 3.3.0
+ 3.3.1
8.0.19
19.7.0.0
diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/OhMyApplication.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/OhMyApplication.java
index 434a2e9b..ddb10420 100644
--- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/OhMyApplication.java
+++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/OhMyApplication.java
@@ -21,7 +21,7 @@ public class OhMyApplication {
"******************* PowerJob Tips *******************\n" +
"如果应用无法启动,我们建议您仔细阅读以下文档来解决:\n" +
"if server can't startup, we recommend that you read the documentation to find a solution:\n" +
- "https://www.yuque.com/powerjob/guidence/xp5ygc#xMQC9\n" +
+ "https://www.yuque.com/powerjob/guidence/problem\n" +
"******************* PowerJob Tips *******************\n\n";
public static void main(String[] args) {
diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/akka/actors/ServerActor.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/akka/actors/ServerActor.java
index fdd82196..685a2056 100644
--- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/akka/actors/ServerActor.java
+++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/akka/actors/ServerActor.java
@@ -2,18 +2,18 @@ package com.github.kfcfans.powerjob.server.akka.actors;
import akka.actor.AbstractActor;
import com.github.kfcfans.powerjob.common.InstanceStatus;
-import com.github.kfcfans.powerjob.common.request.ServerDeployContainerRequest;
-import com.github.kfcfans.powerjob.common.request.TaskTrackerReportInstanceStatusReq;
-import com.github.kfcfans.powerjob.common.request.WorkerHeartbeat;
-import com.github.kfcfans.powerjob.common.request.WorkerLogReportReq;
-import com.github.kfcfans.powerjob.common.request.WorkerNeedDeployContainerRequest;
+import com.github.kfcfans.powerjob.common.PowerJobException;
+import com.github.kfcfans.powerjob.common.request.*;
import com.github.kfcfans.powerjob.common.response.AskResponse;
+import com.github.kfcfans.powerjob.common.response.ResultDTO;
import com.github.kfcfans.powerjob.common.utils.JsonUtils;
import com.github.kfcfans.powerjob.common.utils.NetUtils;
import com.github.kfcfans.powerjob.server.common.constans.SwitchableStatus;
import com.github.kfcfans.powerjob.server.common.utils.SpringUtils;
import com.github.kfcfans.powerjob.server.persistence.core.model.ContainerInfoDO;
+import com.github.kfcfans.powerjob.server.persistence.core.model.JobInfoDO;
import com.github.kfcfans.powerjob.server.persistence.core.repository.ContainerInfoRepository;
+import com.github.kfcfans.powerjob.server.persistence.core.repository.JobInfoRepository;
import com.github.kfcfans.powerjob.server.service.InstanceLogService;
import com.github.kfcfans.powerjob.server.service.instance.InstanceManager;
import com.github.kfcfans.powerjob.server.service.ha.WorkerManagerService;
@@ -21,6 +21,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.core.env.Environment;
+import java.util.List;
import java.util.Optional;
/**
@@ -41,6 +42,7 @@ public class ServerActor extends AbstractActor {
.match(TaskTrackerReportInstanceStatusReq.class, this::onReceiveTaskTrackerReportInstanceStatusReq)
.match(WorkerLogReportReq.class, this::onReceiveWorkerLogReportReq)
.match(WorkerNeedDeployContainerRequest.class, this::onReceiveWorkerNeedDeployContainerRequest)
+ .match(WorkerQueryExecutorClusterReq.class, this::onReceiveWorkerQueryExecutorClusterReq)
.matchAny(obj -> log.warn("[ServerActor] receive unknown request: {}.", obj))
.build();
}
@@ -110,6 +112,33 @@ public class ServerActor extends AbstractActor {
getSender().tell(askResponse, getSelf());
}
+ /**
+ * 处理 worker 请求获取当前任务所有处理器节点的请求
+ * @param req jobId + appId
+ */
+ private void onReceiveWorkerQueryExecutorClusterReq(WorkerQueryExecutorClusterReq req) {
+
+ AskResponse askResponse;
+
+ Long jobId = req.getJobId();
+ Long appId = req.getAppId();
+
+ JobInfoRepository jobInfoRepository = SpringUtils.getBean(JobInfoRepository.class);
+ Optional jobInfoOpt = jobInfoRepository.findById(jobId);
+ if (jobInfoOpt.isPresent()) {
+ JobInfoDO jobInfo = jobInfoOpt.get();
+ if (!jobInfo.getAppId().equals(appId)) {
+ askResponse = AskResponse.failed("Permission Denied!");
+ }else {
+ List sortedAvailableWorker = WorkerManagerService.getSortedAvailableWorker(appId, jobInfo.getMinCpuCores(), jobInfo.getMinMemorySpace(), jobInfo.getMinDiskSpace());
+ askResponse = AskResponse.succeed(sortedAvailableWorker);
+ }
+ }else {
+ askResponse = AskResponse.failed("can't find jobInfo by jobId: " + jobId);
+ }
+ getSender().tell(askResponse, getSelf());
+ }
+
// 不需要加锁,从 Spring IOC 中重复取并没什么问题
private InstanceManager getInstanceManager() {
if (instanceManager == null) {
diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/ServerController.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/ServerController.java
index 6cf50dce..1de5f06e 100644
--- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/ServerController.java
+++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/ServerController.java
@@ -2,20 +2,26 @@ package com.github.kfcfans.powerjob.server.web.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
+import com.github.kfcfans.powerjob.common.PowerJobException;
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 com.github.kfcfans.powerjob.server.akka.OhMyServer;
import com.github.kfcfans.powerjob.server.persistence.core.model.AppInfoDO;
+import com.github.kfcfans.powerjob.server.persistence.core.model.JobInfoDO;
import com.github.kfcfans.powerjob.server.persistence.core.repository.AppInfoRepository;
+import com.github.kfcfans.powerjob.server.persistence.core.repository.JobInfoRepository;
+import com.github.kfcfans.powerjob.server.service.ha.ClusterStatusHolder;
import com.github.kfcfans.powerjob.server.service.ha.ServerSelectService;
import com.github.kfcfans.powerjob.server.service.ha.WorkerManagerService;
+import com.taobao.api.internal.cluster.ClusterManager;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
+import java.util.List;
import java.util.Optional;
import java.util.TimeZone;
@@ -34,8 +40,10 @@ public class ServerController {
private ServerSelectService serverSelectService;
@Resource
private AppInfoRepository appInfoRepository;
+ @Resource
+ private JobInfoRepository jobInfoRepository;
- @GetMapping("assert")
+ @GetMapping("/assert")
public ResultDTO assertAppName(String appName) {
Optional appInfoOpt = appInfoRepository.findByAppName(appName);
return appInfoOpt.map(appInfoDO -> ResultDTO.success(appInfoDO.getId())).
diff --git a/powerjob-server/src/main/resources/application-daily.properties b/powerjob-server/src/main/resources/application-daily.properties
index 6d83511f..9b1e2b7a 100644
--- a/powerjob-server/src/main/resources/application-daily.properties
+++ b/powerjob-server/src/main/resources/application-daily.properties
@@ -11,7 +11,7 @@ spring.datasource.core.hikari.minimum-idle=5
####### mongoDB配置,非核心依赖,通过配置 oms.mongodb.enable=false 来关闭 #######
oms.mongodb.enable=true
-spring.data.mongodb.uri=mongodb://remotehost:27017/powerjob-daily
+spring.data.mongodb.uri=mongodb+srv://zqq:No1Bug2Please3!@cluster0.wie54.gcp.mongodb.net/powerjob_daily?retryWrites=true&w=majority
####### 邮件配置(不需要邮件报警可以删除以下配置来避免报错) #######
spring.mail.host=smtp.163.com
diff --git a/powerjob-worker-agent/pom.xml b/powerjob-worker-agent/pom.xml
index d95e203f..e51219e0 100644
--- a/powerjob-worker-agent/pom.xml
+++ b/powerjob-worker-agent/pom.xml
@@ -10,12 +10,12 @@
4.0.0
powerjob-worker-agent
- 3.3.0
+ 3.3.1
jar
- 3.3.0
+ 3.3.1
1.2.3
4.3.2
diff --git a/powerjob-worker-samples/pom.xml b/powerjob-worker-samples/pom.xml
index 86835a94..c34da9af 100644
--- a/powerjob-worker-samples/pom.xml
+++ b/powerjob-worker-samples/pom.xml
@@ -10,11 +10,11 @@
4.0.0
powerjob-worker-samples
- 3.3.0
+ 3.3.1
2.2.6.RELEASE
- 3.3.0
+ 3.3.1
1.2.68
diff --git a/powerjob-worker-samples/src/main/java/com/github/kfcfans/powerjob/samples/processors/BroadcastProcessorDemo.java b/powerjob-worker-samples/src/main/java/com/github/kfcfans/powerjob/samples/processors/BroadcastProcessorDemo.java
index 73bb3ec7..70dc3759 100644
--- a/powerjob-worker-samples/src/main/java/com/github/kfcfans/powerjob/samples/processors/BroadcastProcessorDemo.java
+++ b/powerjob-worker-samples/src/main/java/com/github/kfcfans/powerjob/samples/processors/BroadcastProcessorDemo.java
@@ -5,6 +5,7 @@ import com.github.kfcfans.powerjob.worker.core.processor.ProcessResult;
import com.github.kfcfans.powerjob.worker.core.processor.TaskContext;
import com.github.kfcfans.powerjob.worker.core.processor.TaskResult;
import com.github.kfcfans.powerjob.worker.core.processor.sdk.BroadcastProcessor;
+import com.github.kfcfans.powerjob.worker.log.OmsLogger;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -34,9 +35,16 @@ public class BroadcastProcessorDemo extends BroadcastProcessor {
@Override
public ProcessResult process(TaskContext taskContext) throws Exception {
+ OmsLogger logger = taskContext.getOmsLogger();
System.out.println("===== BroadcastProcessorDemo#process ======");
- taskContext.getOmsLogger().info("BroadcastProcessorDemo#process, current host: {}", NetUtils.getLocalHost());
- Thread.sleep(45 * 1000);
+ logger.info("BroadcastProcessorDemo#process, current host: {}", NetUtils.getLocalHost());
+ long sleepTime = 1000;
+ try {
+ sleepTime = Long.parseLong(taskContext.getJobParams());
+ }catch (Exception e) {
+ logger.warn("[BroadcastProcessor] parse sleep time failed!", e);
+ }
+ Thread.sleep(Math.max(sleepTime, 1000));
return new ProcessResult(true);
}
diff --git a/powerjob-worker-spring-boot-starter/pom.xml b/powerjob-worker-spring-boot-starter/pom.xml
index d5ba6e8e..6ddad2fa 100644
--- a/powerjob-worker-spring-boot-starter/pom.xml
+++ b/powerjob-worker-spring-boot-starter/pom.xml
@@ -10,11 +10,11 @@
4.0.0
powerjob-worker-spring-boot-starter
- 3.3.0
+ 3.3.1
jar
- 3.3.0
+ 3.3.1
2.2.6.RELEASE
diff --git a/powerjob-worker/pom.xml b/powerjob-worker/pom.xml
index 44d95e5d..f00034e0 100644
--- a/powerjob-worker/pom.xml
+++ b/powerjob-worker/pom.xml
@@ -10,12 +10,12 @@
4.0.0
powerjob-worker
- 3.3.0
+ 3.3.1
jar
5.2.4.RELEASE
- 3.3.0
+ 3.3.1
1.4.200
3.4.2
5.6.1
diff --git a/powerjob-worker/src/main/java/com/github/kfcfans/powerjob/worker/common/utils/AkkaUtils.java b/powerjob-worker/src/main/java/com/github/kfcfans/powerjob/worker/common/utils/AkkaUtils.java
index 42114b90..efb465df 100644
--- a/powerjob-worker/src/main/java/com/github/kfcfans/powerjob/worker/common/utils/AkkaUtils.java
+++ b/powerjob-worker/src/main/java/com/github/kfcfans/powerjob/worker/common/utils/AkkaUtils.java
@@ -2,6 +2,7 @@ package com.github.kfcfans.powerjob.worker.common.utils;
import akka.actor.ActorSelection;
import akka.pattern.Patterns;
+import com.github.kfcfans.powerjob.common.PowerJobException;
import com.github.kfcfans.powerjob.common.response.AskResponse;
import com.github.kfcfans.powerjob.worker.OhMyWorker;
import com.github.kfcfans.powerjob.common.RemoteConstant;
@@ -45,13 +46,20 @@ public class AkkaUtils {
*/
public static boolean reliableTransmit(ActorSelection remote, Object msg) {
try {
- CompletionStage