feat:环境隔离

This commit is contained in:
Xiang
2026-01-14 16:35:13 +08:00
parent c1f7305b69
commit 5fb186a85b
15 changed files with 48 additions and 20 deletions

View File

@@ -11,8 +11,8 @@ import java.util.List;
*/
public interface AdminJobClient {
List<JobConfigDO> fetchJobByAppName(String appName);
List<JobConfigDO> fetchJobByAppNameAndVersion(String appName, Integer version);
List<JobConfigDO> fetchJobByAppName(String appName, Long namespace);
List<JobConfigDO> fetchJobByAppNameAndVersion(String appName, Integer version, Long namespace);
void registerJob(JobDefinition jobDefinition, String className);
}

View File

@@ -30,11 +30,12 @@ public class HttpAdminJobClientImpl implements AdminJobClient {
private static final BaseHttpHelp httpHelp = HttpHelperFactory.createQuartzHttp();
@Override
public List<JobConfigDO> fetchJobByAppName(String appName) {
public List<JobConfigDO> fetchJobByAppName(String appName, Long namespace) {
String address = xxzJobProperties.getAdminAddress();
address = address + "/open/quartz/fetch/list";
Map<String, String> params = Maps.newHashMap();
params.put("appName", appName);
params.put("env", String.valueOf(namespace));
String resp = httpHelp.doGet(address, params);
if (StringUtils.isNotBlank(resp)) {
JSONObject jsonObject = JSON.parseObject(resp);
@@ -49,11 +50,12 @@ public class HttpAdminJobClientImpl implements AdminJobClient {
}
@Override
public List<JobConfigDO> fetchJobByAppNameAndVersion(String appName, Integer version) {
public List<JobConfigDO> fetchJobByAppNameAndVersion(String appName, Integer version, Long namespace) {
String address = xxzJobProperties.getAdminAddress();
address = address + "/open/quartz/fetch/listByVersion";
Map<String, String> params = Maps.newHashMap();
params.put("appName", appName);
params.put("env", String.valueOf(namespace));
params.put("currVersion", String.valueOf(version));
String resp = httpHelp.doGet(address, params);
@@ -78,6 +80,7 @@ public class HttpAdminJobClientImpl implements AdminJobClient {
request.setCron(jobDefinition.getCron());
request.setClazz(className);
request.setMethod(jobDefinition.getMethod().getName());
request.setEnv(xxzJobProperties.getNamespace());
String address = xxzJobProperties.getAdminAddress();
address = address + "/open/quartz/register/single";
httpHelp.doPost(address, JSON.toJSONString(request));

View File

@@ -35,7 +35,7 @@ public class JobBootstrap implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) {
// 启动时动态获取此app下面的数据库配置好的定时任务 用于管理cron和开关
List<JobConfigDO> jobConfigDOS = adminJobClient.fetchJobByAppName(xxzJobProperties.getAppName());
List<JobConfigDO> jobConfigDOS = adminJobClient.fetchJobByAppName(xxzJobProperties.getAppName(), xxzJobProperties.getNamespace());
if (CollectionUtils.isEmpty(jobConfigDOS)) {
return;
}

View File

@@ -42,4 +42,9 @@ public class TaskRegisterRequest {
* 方法
*/
private String method;
/**
* 环境
*/
private Long env;
}

View File

@@ -25,4 +25,9 @@ public class XxzJobProperties {
* 调度中心地址
*/
private String adminAddress;
/**
* 命名空间
*/
private Long namespace;
}

View File

@@ -26,7 +26,7 @@ public class JobConfigRefreshTask {
private JobScheduler jobScheduler;
@Scheduled(fixedDelay = 5000)
public void refresh() {
List<JobConfigDO> jobConfigDOS = adminJobClient.fetchJobByAppName(xxzJobProperties.getAppName());
List<JobConfigDO> jobConfigDOS = adminJobClient.fetchJobByAppName(xxzJobProperties.getAppName(), xxzJobProperties.getNamespace());
for (JobConfigDO jobConfigDO : jobConfigDOS) {
JobDefinition jobDefinition = JobDefinitionHolder.getOne(jobConfigDO.getBeanName());