Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 882392a

Browse files
committed
feat: support lazy init#725
1 parent c875ba3 commit 882392a

File tree

6 files changed

+28
-12
lines changed

6 files changed

+28
-12
lines changed
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
1-
package tech.powerjob.worker.background.discovery;
1+
package tech.powerjob.common.model;
22

33
import lombok.Data;
44
import lombok.NoArgsConstructor;
55
import lombok.experimental.Accessors;
66

7+
import java.io.Serializable;
8+
79
/**
8-
* 应用信息
10+
* WorkerAppInfo
911
*
1012
* @author tjq
1113
* @since 2023/9/2
1214
*/
1315
@Data
1416
@NoArgsConstructor
1517
@Accessors(chain = true)
16-
public class AppInfo {
18+
public class WorkerAppInfo implements Serializable {
1719

1820
/**
1921
* 应用唯一 ID

powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/ServerController.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.springframework.web.bind.annotation.RequestMapping;
88
import org.springframework.web.bind.annotation.RequestParam;
99
import org.springframework.web.bind.annotation.RestController;
10+
import tech.powerjob.common.model.WorkerAppInfo;
1011
import tech.powerjob.common.request.ServerDiscoveryRequest;
1112
import tech.powerjob.common.response.ResultDTO;
1213
import tech.powerjob.common.utils.CommonUtils;
@@ -50,6 +51,16 @@ public ResultDTO<Long> assertAppName(String appName) {
5051
orElseGet(() -> ResultDTO.failed(String.format("app(%s) is not registered! Please register the app in oms-console first.", appName)));
5152
}
5253

54+
@GetMapping("/assertV2")
55+
public ResultDTO<WorkerAppInfo> assertAppNameV2(String appName) {
56+
Optional<AppInfoDO> appInfoOpt = appInfoRepository.findByAppName(appName);
57+
return appInfoOpt.map(appInfoDO -> {
58+
WorkerAppInfo workerAppInfo = new WorkerAppInfo().setAppId(appInfoDO.getId());
59+
return ResultDTO.success(workerAppInfo);
60+
}).
61+
orElseGet(() -> ResultDTO.failed(String.format("app(%s) is not registered! Please register the app in oms-console first.", appName)));
62+
}
63+
5364
@GetMapping("/acquire")
5465
public ResultDTO<String> acquireServer(ServerDiscoveryRequest request) {
5566
return ResultDTO.success(serverElectionService.elect(request));

powerjob-worker/src/main/java/tech/powerjob/worker/PowerJobWorker.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.google.common.collect.Lists;
55
import lombok.extern.slf4j.Slf4j;
66
import tech.powerjob.common.PowerJobDKey;
7+
import tech.powerjob.common.model.WorkerAppInfo;
78
import tech.powerjob.common.utils.CommonUtils;
89
import tech.powerjob.common.utils.NetUtils;
910
import tech.powerjob.common.utils.PropertyUtils;
@@ -18,7 +19,6 @@
1819
import tech.powerjob.worker.actors.WorkerActor;
1920
import tech.powerjob.worker.background.OmsLogHandler;
2021
import tech.powerjob.worker.background.WorkerHealthReporter;
21-
import tech.powerjob.worker.background.discovery.AppInfo;
2222
import tech.powerjob.worker.background.discovery.PowerJobServerDiscoveryService;
2323
import tech.powerjob.worker.background.discovery.ServerDiscoveryService;
2424
import tech.powerjob.worker.common.PowerBannerPrinter;
@@ -75,7 +75,7 @@ public void init() throws Exception {
7575
try {
7676
PowerBannerPrinter.print();
7777
// 校验 appName
78-
AppInfo appInfo = serverDiscoveryService.assertApp();
78+
WorkerAppInfo appInfo = serverDiscoveryService.assertApp();
7979
workerRuntime.setAppInfo(appInfo);
8080

8181
// 初始化网络数据,区别对待上报地址和本机绑定地址(对外统一使用上报地址)

powerjob-worker/src/main/java/tech/powerjob/worker/background/discovery/PowerJobServerDiscoveryService.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import tech.powerjob.common.OmsConstant;
99
import tech.powerjob.common.exception.ImpossibleException;
1010
import tech.powerjob.common.exception.PowerJobException;
11+
import tech.powerjob.common.model.WorkerAppInfo;
1112
import tech.powerjob.common.request.ServerDiscoveryRequest;
1213
import tech.powerjob.common.response.ObjectResultDTO;
1314
import tech.powerjob.common.serialize.JsonUtils;
@@ -33,7 +34,7 @@
3334
@Slf4j
3435
public class PowerJobServerDiscoveryService implements ServerDiscoveryService {
3536

36-
private final AppInfo appInfo = new AppInfo();
37+
private final WorkerAppInfo appInfo = new WorkerAppInfo();
3738

3839
private String currentServerAddress;
3940

@@ -61,7 +62,7 @@ public PowerJobServerDiscoveryService(PowerJobWorkerConfig config) {
6162
}
6263

6364
@Override
64-
public AppInfo assertApp() {
65+
public WorkerAppInfo assertApp() {
6566
try {
6667
return assertApp0();
6768
} catch (Exception e) {
@@ -76,7 +77,7 @@ public AppInfo assertApp() {
7677
throw new ImpossibleException();
7778
}
7879

79-
private AppInfo assertApp0() {
80+
private WorkerAppInfo assertApp0() {
8081
String appName = config.getAppName();
8182
Objects.requireNonNull(appName, "appName can't be empty!");
8283

@@ -97,7 +98,7 @@ private AppInfo assertApp0() {
9798
}
9899

99100
// 新版本,接口直接下发 AppInfo 内容,后续可扩展安全加密等信息
100-
AppInfo serverAppInfo = JsonUtils.parseObject(JsonUtils.toJSONString(resultDataContent), AppInfo.class);
101+
WorkerAppInfo serverAppInfo = JsonUtils.parseObject(JsonUtils.toJSONString(resultDataContent), WorkerAppInfo.class);
101102
appInfo.setAppId(serverAppInfo.getAppId());
102103
return appInfo;
103104
} else {

powerjob-worker/src/main/java/tech/powerjob/worker/background/discovery/ServerDiscoveryService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package tech.powerjob.worker.background.discovery;
22

3+
import tech.powerjob.common.model.WorkerAppInfo;
4+
35
import java.util.concurrent.ScheduledExecutorService;
46

57
/**
@@ -14,7 +16,7 @@ public interface ServerDiscoveryService {
1416
* 鉴权 & 附带信息下发
1517
* @return appInfo
1618
*/
17-
AppInfo assertApp();
19+
WorkerAppInfo assertApp();
1820

1921
/**
2022
* 获取当前的 server 地址

powerjob-worker/src/main/java/tech/powerjob/worker/common/WorkerRuntime.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package tech.powerjob.worker.common;
22

33
import lombok.Data;
4+
import tech.powerjob.common.model.WorkerAppInfo;
45
import tech.powerjob.remote.framework.transporter.Transporter;
56
import tech.powerjob.worker.background.OmsLogHandler;
6-
import tech.powerjob.worker.background.discovery.AppInfo;
77
import tech.powerjob.worker.background.discovery.ServerDiscoveryService;
88
import tech.powerjob.worker.core.executor.ExecutorManager;
99
import tech.powerjob.worker.persistence.TaskPersistenceService;
@@ -23,7 +23,7 @@ public class WorkerRuntime {
2323
/**
2424
* App 基础信息
2525
*/
26-
private AppInfo appInfo;
26+
private WorkerAppInfo appInfo;
2727
/**
2828
* 当前执行器地址
2929
*/

0 commit comments

Comments
 (0)