diff --git a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/domain/entity/JobConfigDO.java b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/domain/entity/JobConfigDO.java index d269354..fea0265 100644 --- a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/domain/entity/JobConfigDO.java +++ b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/domain/entity/JobConfigDO.java @@ -86,4 +86,9 @@ public class JobConfigDO implements Serializable { * 版本 */ private Integer version; + + /** + * 环境 + */ + private Long env; } diff --git a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/domain/req/TaskRegisterRequest.java b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/domain/req/TaskRegisterRequest.java index bee683c..ed136af 100644 --- a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/domain/req/TaskRegisterRequest.java +++ b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/domain/req/TaskRegisterRequest.java @@ -5,6 +5,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; /** * @Author: xiang @@ -15,6 +16,9 @@ import javax.validation.constraints.NotBlank; @NoArgsConstructor public class TaskRegisterRequest { + @NotNull(message = "命名空间不能为空") + private Long env; + /** * 应用名称 */ diff --git a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/manage/IQuartzConfigManage.java b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/manage/IQuartzConfigManage.java index d08c39e..e6602b1 100644 --- a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/manage/IQuartzConfigManage.java +++ b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/manage/IQuartzConfigManage.java @@ -13,7 +13,7 @@ import java.util.List; public interface IQuartzConfigManage extends IService { - List selectByAppName(String name); + List selectByAppName(String name, Long env); List selectByAppNameAndVersion(String name, Integer version); List loadEnabledJobs(); diff --git a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/manage/QuartzConfigManageImpl.java b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/manage/QuartzConfigManageImpl.java index bbd0d3c..e68a4a5 100644 --- a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/manage/QuartzConfigManageImpl.java +++ b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/manage/QuartzConfigManageImpl.java @@ -18,10 +18,11 @@ import java.util.List; @Service public class QuartzConfigManageImpl extends ServiceImpl implements IQuartzConfigManage { @Override - public List selectByAppName(String name) { + public List selectByAppName(String name, Long env) { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(JobConfigDO::getApplicationName, name); lqw.eq(JobConfigDO::getDelFlag, 0); + lqw.eq(JobConfigDO::getEnv, env); return baseMapper.selectList(lqw); } diff --git a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/server/XxzJobFetchController.java b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/server/XxzJobFetchController.java index 29d888d..c37070c 100644 --- a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/server/XxzJobFetchController.java +++ b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/server/XxzJobFetchController.java @@ -22,13 +22,15 @@ public class XxzJobFetchController { private final ITaskConfigService taskConfigService; @GetMapping("/list") - public Result list(@RequestParam("appName") String appName) { - List jobsByAppName = taskConfigService.getJobsByAppName(appName); + public Result list(@RequestParam("appName") String appName, @RequestParam("env") Long env) { + List jobsByAppName = taskConfigService.getJobsByAppName(appName, env); return Result.success(jobsByAppName); } @GetMapping("/listByVersion") - public Result listByVersion(@RequestParam("appName") String appName, @RequestParam("currVersion") Integer currVersion) { - return Result.success(taskConfigService.getJobsByAppNameAndVersion(appName, currVersion)); + public Result listByVersion(@RequestParam("appName") String appName, + @RequestParam("currVersion") Integer currVersion, + @RequestParam("env") Long env) { + return Result.success(taskConfigService.getJobsByAppNameAndVersion(appName, currVersion, env)); } } diff --git a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/service/ITaskConfigService.java b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/service/ITaskConfigService.java index c90588c..0058b69 100644 --- a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/service/ITaskConfigService.java +++ b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/service/ITaskConfigService.java @@ -30,7 +30,7 @@ public interface ITaskConfigService { * @param appName * @return */ - List getJobsByAppName(String appName); + List getJobsByAppName(String appName, Long env); /** * 根据应用名称和版本获取任务 @@ -38,5 +38,5 @@ public interface ITaskConfigService { * @param version * @return */ - List getJobsByAppNameAndVersion(String appName, Integer version); + List getJobsByAppNameAndVersion(String appName, Integer version, Long env); } diff --git a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/service/impl/TaskConfigServiceImpl.java b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/service/impl/TaskConfigServiceImpl.java index ce6a10b..0aa63f5 100644 --- a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/service/impl/TaskConfigServiceImpl.java +++ b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/service/impl/TaskConfigServiceImpl.java @@ -41,7 +41,8 @@ public class TaskConfigServiceImpl implements ITaskConfigService { return false; } String applicationName = request.get(0).getApplicationName(); - List jobs = quartzConfigManage.selectByAppName(applicationName); + Long env = request.get(0).getEnv(); + List jobs = quartzConfigManage.selectByAppName(applicationName, env); Map existJobs = Maps.newHashMap(); if (CollectionUtils.isNotEmpty(jobs)) { existJobs.putAll(jobs.stream().collect(Collectors.toMap(JobConfigDO::getBeanName, Function.identity(), (a, b) -> a))); @@ -69,13 +70,13 @@ public class TaskConfigServiceImpl implements ITaskConfigService { } @Override - public List getJobsByAppName(String appName) { - return quartzConfigManage.selectByAppName(appName); + public List getJobsByAppName(String appName, Long env) { + return quartzConfigManage.selectByAppName(appName, env); } @Override - public List getJobsByAppNameAndVersion(String appName, Integer version) { - List jobConfigDOS = quartzConfigManage.selectByAppName(appName); + public List getJobsByAppNameAndVersion(String appName, Integer version, Long env) { + List jobConfigDOS = quartzConfigManage.selectByAppName(appName, env); Map> map = Maps.newHashMap(); if (CollectionUtils.isNotEmpty(jobConfigDOS)) { map.putAll(jobConfigDOS.stream().collect(Collectors.groupingBy(JobConfigDO::getBeanName))); @@ -104,5 +105,6 @@ public class TaskConfigServiceImpl implements ITaskConfigService { jobConfigDO.setClazz(item.getClazz()); jobConfigDO.setMethod(item.getMethod()); jobConfigDO.setJobSwitch(Objects.isNull(jobConfigDO.getJobSwitch()) ? 0 : jobConfigDO.getJobSwitch()); + jobConfigDO.setEnv(item.getEnv()); } } diff --git a/xservice-quartz-admin/src/main/resources/application.yml b/xservice-quartz-admin/src/main/resources/application.yml index 27558fa..4f740e6 100644 --- a/xservice-quartz-admin/src/main/resources/application.yml +++ b/xservice-quartz-admin/src/main/resources/application.yml @@ -2,7 +2,7 @@ server: port: 30030 spring: profiles: - active: test + active: prod application: name: xservice-quartz-admin main: diff --git a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/api/AdminJobClient.java b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/api/AdminJobClient.java index b503986..2dcc417 100644 --- a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/api/AdminJobClient.java +++ b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/api/AdminJobClient.java @@ -11,8 +11,8 @@ import java.util.List; */ public interface AdminJobClient { - List fetchJobByAppName(String appName); - List fetchJobByAppNameAndVersion(String appName, Integer version); + List fetchJobByAppName(String appName, Long namespace); + List fetchJobByAppNameAndVersion(String appName, Integer version, Long namespace); void registerJob(JobDefinition jobDefinition, String className); } diff --git a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/api/HttpAdminJobClientImpl.java b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/api/HttpAdminJobClientImpl.java index fb44b93..86be31a 100644 --- a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/api/HttpAdminJobClientImpl.java +++ b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/api/HttpAdminJobClientImpl.java @@ -30,11 +30,12 @@ public class HttpAdminJobClientImpl implements AdminJobClient { private static final BaseHttpHelp httpHelp = HttpHelperFactory.createQuartzHttp(); @Override - public List fetchJobByAppName(String appName) { + public List fetchJobByAppName(String appName, Long namespace) { String address = xxzJobProperties.getAdminAddress(); address = address + "/open/quartz/fetch/list"; Map 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 fetchJobByAppNameAndVersion(String appName, Integer version) { + public List fetchJobByAppNameAndVersion(String appName, Integer version, Long namespace) { String address = xxzJobProperties.getAdminAddress(); address = address + "/open/quartz/fetch/listByVersion"; Map 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)); diff --git a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/boostrap/JobBootstrap.java b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/boostrap/JobBootstrap.java index 4d83dc9..2240b0b 100644 --- a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/boostrap/JobBootstrap.java +++ b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/boostrap/JobBootstrap.java @@ -35,7 +35,7 @@ public class JobBootstrap implements ApplicationRunner { @Override public void run(ApplicationArguments args) { // 启动时动态获取此app下面的数据库配置好的定时任务 用于管理cron和开关 - List jobConfigDOS = adminJobClient.fetchJobByAppName(xxzJobProperties.getAppName()); + List jobConfigDOS = adminJobClient.fetchJobByAppName(xxzJobProperties.getAppName(), xxzJobProperties.getNamespace()); if (CollectionUtils.isEmpty(jobConfigDOS)) { return; } diff --git a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/model/TaskRegisterRequest.java b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/model/TaskRegisterRequest.java index c465f33..87ebf62 100644 --- a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/model/TaskRegisterRequest.java +++ b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/model/TaskRegisterRequest.java @@ -42,4 +42,9 @@ public class TaskRegisterRequest { * 方法 */ private String method; + + /** + * 环境 + */ + private Long env; } diff --git a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/model/XxzJobProperties.java b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/model/XxzJobProperties.java index 255f23a..f82ad26 100644 --- a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/model/XxzJobProperties.java +++ b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/model/XxzJobProperties.java @@ -25,4 +25,9 @@ public class XxzJobProperties { * 调度中心地址 */ private String adminAddress; + + /** + * 命名空间 + */ + private Long namespace; } diff --git a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/schedule/JobConfigRefreshTask.java b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/schedule/JobConfigRefreshTask.java index fda250a..73c9708 100644 --- a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/schedule/JobConfigRefreshTask.java +++ b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/schedule/JobConfigRefreshTask.java @@ -26,7 +26,7 @@ public class JobConfigRefreshTask { private JobScheduler jobScheduler; @Scheduled(fixedDelay = 5000) public void refresh() { - List jobConfigDOS = adminJobClient.fetchJobByAppName(xxzJobProperties.getAppName()); + List jobConfigDOS = adminJobClient.fetchJobByAppName(xxzJobProperties.getAppName(), xxzJobProperties.getNamespace()); for (JobConfigDO jobConfigDO : jobConfigDOS) { JobDefinition jobDefinition = JobDefinitionHolder.getOne(jobConfigDO.getBeanName()); diff --git a/xservice-quartz-sample/src/main/resources/application.yml b/xservice-quartz-sample/src/main/resources/application.yml index 6a11831..3aa9f00 100644 --- a/xservice-quartz-sample/src/main/resources/application.yml +++ b/xservice-quartz-sample/src/main/resources/application.yml @@ -1,6 +1,7 @@ xxz-job: app-name: springboot-quartz-test admin-address: http://127.0.0.1:30030 + namespace: 1 spring: main: