diff --git a/pom.xml b/pom.xml index 3fcd0a3..d8e9ffc 100644 --- a/pom.xml +++ b/pom.xml @@ -44,17 +44,17 @@ com.aizuda snail-job-client-starter - 1.1.1 + 1.2.0-beta2 com.aizuda snail-job-client-retry-core - 1.1.1 + 1.2.0-beta2 com.aizuda snail-job-client-job-core - 1.1.1 + 1.2.0-beta2 com.googlecode.aviator diff --git a/src/main/java/com/example/snailjob/controller/JobController.java b/src/main/java/com/example/snailjob/controller/JobController.java new file mode 100644 index 0000000..4c92f75 --- /dev/null +++ b/src/main/java/com/example/snailjob/controller/JobController.java @@ -0,0 +1,24 @@ +package com.example.snailjob.controller; + +import com.example.snailjob.handler.TestAddJobHandler; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + * @author opensnail + * @date 2024-10-19 10:41:25 + * @since sj_1.2.0-beta2 + */ +@RestController +@RequestMapping("/open-api/job") +@Tag(name = "JobOpenApi", description = "通过OpenApi可以灵活的实现对Job的增、改、查功能") +@RequiredArgsConstructor +public class JobController { + private final TestAddJobHandler testAddJobHandler; + + @PostMapping("/custer/add") + public Long addClusterJob(@RequestBody String jobName) { + return testAddJobHandler.addClusterJob(jobName); + } +} diff --git a/src/main/java/com/example/snailjob/handler/TestAddJobHandler.java b/src/main/java/com/example/snailjob/handler/TestAddJobHandler.java new file mode 100644 index 0000000..051ab3b --- /dev/null +++ b/src/main/java/com/example/snailjob/handler/TestAddJobHandler.java @@ -0,0 +1,57 @@ +package com.example.snailjob.handler; + +import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum; +import com.aizuda.snailjob.client.job.core.enums.TriggerTypeEnum; +import com.aizuda.snailjob.client.job.core.openapi.SnailJobOpenApi; +import com.aizuda.snailjob.common.core.enums.BlockStrategyEnum; +import org.springframework.stereotype.Component; + +@Component +public class TestAddJobHandler { + + /** + * 新增集群模式的任务 + * + * @param jobName 任务名称 + * @return 任务id + */ + public Long addClusterJob(String jobName) { + return SnailJobOpenApi.addClusterJob() + .setRouteKey(AllocationAlgorithmEnum.RANDOM) + .setJobName(jobName) + .setExecutorInfo("testJobExecutor") + .setExecutorTimeout(30) + .setDescription("add") + .setBlockStrategy(BlockStrategyEnum.DISCARD) + .setMaxRetryTimes(1) + .setTriggerType(TriggerTypeEnum.SCHEDULED_TIME) + .setTriggerInterval(String.valueOf(60)) + .addArgsStr("测试数据", 123) + .addArgsStr("addArg", "args") + .setRetryInterval(3) + .execute(); + + } + + /** + * 新增集群模式的任务 + * + * @param jobName 任务名称 + * @return 任务id + */ + public Long addShardingJob(String jobName) { + return SnailJobOpenApi.addShardingJob() + .setJobName(jobName) + .setExecutorInfo("testJobExecutor") + .setExecutorTimeout(30) + .setDescription("add") + .setBlockStrategy(BlockStrategyEnum.DISCARD) + .setMaxRetryTimes(1) + .setTriggerType(TriggerTypeEnum.SCHEDULED_TIME) + .setTriggerInterval(String.valueOf(60)) + .addShardingArgs("分片1", "分片2", "分片3") + .setRetryInterval(3) + .execute(); + + } +} diff --git a/src/main/java/com/example/snailjob/handler/TestGetJobDetailExecutor.java b/src/main/java/com/example/snailjob/handler/TestGetJobDetailExecutor.java new file mode 100644 index 0000000..3da31de --- /dev/null +++ b/src/main/java/com/example/snailjob/handler/TestGetJobDetailExecutor.java @@ -0,0 +1,23 @@ +package com.example.snailjob.handler; + +import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; +import com.aizuda.snailjob.client.job.core.dto.JobArgs; +import com.aizuda.snailjob.client.job.core.dto.JobResponseVO; +import com.aizuda.snailjob.client.job.core.openapi.SnailJobOpenApi; +import com.aizuda.snailjob.client.model.ExecuteResult; +import com.aizuda.snailjob.common.core.util.JsonUtil; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Component +@JobExecutor(name = "testGetJobDetailExecutor") +public class TestGetJobDetailExecutor { + public ExecuteResult jobExecute(JobArgs jobArgs) { + Object jobParams = jobArgs.getJobParams(); + Map hashMap = JsonUtil.parseHashMap((String) jobParams); + String id = String.valueOf(hashMap.get("id")); + JobResponseVO execute = SnailJobOpenApi.getJobDetail(Long.valueOf(id)).execute(); + return ExecuteResult.success(execute); + } +} diff --git a/src/main/java/com/example/snailjob/handler/TestTriggerJobExecutor.java b/src/main/java/com/example/snailjob/handler/TestTriggerJobExecutor.java new file mode 100644 index 0000000..c5c2482 --- /dev/null +++ b/src/main/java/com/example/snailjob/handler/TestTriggerJobExecutor.java @@ -0,0 +1,22 @@ +package com.example.snailjob.handler; + +import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; +import com.aizuda.snailjob.client.job.core.dto.JobArgs; +import com.aizuda.snailjob.client.job.core.openapi.SnailJobOpenApi; +import com.aizuda.snailjob.client.model.ExecuteResult; +import com.aizuda.snailjob.common.core.util.JsonUtil; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Component +@JobExecutor(name = "testTriggerJobExecutor") +public class TestTriggerJobExecutor { + public ExecuteResult jobExecute(JobArgs jobArgs) { + Object jobParams = jobArgs.getJobParams(); + Map hashMap = JsonUtil.parseHashMap((String) jobParams); + String id = String.valueOf(hashMap.get("id")); + Boolean execute = SnailJobOpenApi.triggerJob(Long.valueOf(id)).execute(); + return ExecuteResult.success(execute); + } +} diff --git a/src/main/java/com/example/snailjob/handler/TestTriggerWorkFlowExecutor.java b/src/main/java/com/example/snailjob/handler/TestTriggerWorkFlowExecutor.java new file mode 100644 index 0000000..ddc9b41 --- /dev/null +++ b/src/main/java/com/example/snailjob/handler/TestTriggerWorkFlowExecutor.java @@ -0,0 +1,23 @@ +package com.example.snailjob.handler; + +import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; +import com.aizuda.snailjob.client.job.core.dto.JobArgs; +import com.aizuda.snailjob.client.job.core.handler.RequestTriggerJobHandler; +import com.aizuda.snailjob.client.job.core.openapi.SnailJobOpenApi; +import com.aizuda.snailjob.client.model.ExecuteResult; +import com.aizuda.snailjob.common.core.util.JsonUtil; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Component +@JobExecutor(name = "testTriggerWorkFlowExecutor") +public class TestTriggerWorkFlowExecutor { + public ExecuteResult jobExecute(JobArgs jobArgs) { + Object jobParams = jobArgs.getJobParams(); + Map hashMap = JsonUtil.parseHashMap((String) jobParams); + String id = String.valueOf(hashMap.get("id")); + RequestTriggerJobHandler jobHandler = SnailJobOpenApi.triggerWorkFlow(Long.valueOf(id)); + return ExecuteResult.success(jobHandler.execute()); + } +} diff --git a/src/main/java/com/example/snailjob/handler/TestUpdateJobExecutor.java b/src/main/java/com/example/snailjob/handler/TestUpdateJobExecutor.java new file mode 100644 index 0000000..595d49d --- /dev/null +++ b/src/main/java/com/example/snailjob/handler/TestUpdateJobExecutor.java @@ -0,0 +1,27 @@ +package com.example.snailjob.handler; + +import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; +import com.aizuda.snailjob.client.job.core.dto.JobArgs; +import com.aizuda.snailjob.client.job.core.enums.TriggerTypeEnum; +import com.aizuda.snailjob.client.job.core.handler.RequestUpdateHandler; +import com.aizuda.snailjob.client.job.core.openapi.SnailJobOpenApi; +import com.aizuda.snailjob.client.model.ExecuteResult; +import com.aizuda.snailjob.common.core.util.JsonUtil; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Component +@JobExecutor(name = "testUpdateJobExecutor") +public class TestUpdateJobExecutor { + public ExecuteResult jobExecute(JobArgs jobArgs) { + Object jobParams = jobArgs.getJobParams(); + Map hashMap = JsonUtil.parseHashMap((String) jobParams); + String id = String.valueOf(hashMap.get("id")); + String jobName = String.valueOf(hashMap.get("jobName")); + RequestUpdateHandler updateHandler = SnailJobOpenApi.updateJob(Long.valueOf(id)); + updateHandler.setJobName(jobName); + updateHandler.setTriggerType(TriggerTypeEnum.WORK_FLOW); + return ExecuteResult.success(updateHandler.execute()); + } +} diff --git a/src/main/java/com/example/snailjob/handler/TestUpdateJobStatusExecutor.java b/src/main/java/com/example/snailjob/handler/TestUpdateJobStatusExecutor.java new file mode 100644 index 0000000..74f478d --- /dev/null +++ b/src/main/java/com/example/snailjob/handler/TestUpdateJobStatusExecutor.java @@ -0,0 +1,26 @@ +package com.example.snailjob.handler; + +import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; +import com.aizuda.snailjob.client.job.core.dto.JobArgs; +import com.aizuda.snailjob.client.job.core.handler.RequestUpdateStatusHandler; +import com.aizuda.snailjob.client.job.core.openapi.SnailJobOpenApi; +import com.aizuda.snailjob.client.model.ExecuteResult; +import com.aizuda.snailjob.common.core.enums.StatusEnum; +import com.aizuda.snailjob.common.core.util.JsonUtil; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Component +@JobExecutor(name = "testUpdateJobStatusExecutor") +public class TestUpdateJobStatusExecutor { + public ExecuteResult jobExecute(JobArgs jobArgs) { + Object jobParams = jobArgs.getJobParams(); + Map hashMap = JsonUtil.parseHashMap((String) jobParams); + String id = String.valueOf(hashMap.get("id")); + RequestUpdateStatusHandler updateJobStatus = SnailJobOpenApi.updateJobStatus(Long.valueOf(id)); + updateJobStatus.setStatus(StatusEnum.NO); + + return ExecuteResult.success(updateJobStatus.execute()); + } +} diff --git a/src/main/java/com/example/snailjob/handler/TestUpdateWorkFLowStatusExecutor.java b/src/main/java/com/example/snailjob/handler/TestUpdateWorkFLowStatusExecutor.java new file mode 100644 index 0000000..d42c328 --- /dev/null +++ b/src/main/java/com/example/snailjob/handler/TestUpdateWorkFLowStatusExecutor.java @@ -0,0 +1,26 @@ +package com.example.snailjob.handler; + +import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; +import com.aizuda.snailjob.client.job.core.dto.JobArgs; +import com.aizuda.snailjob.client.job.core.handler.RequestUpdateStatusHandler; +import com.aizuda.snailjob.client.job.core.openapi.SnailJobOpenApi; +import com.aizuda.snailjob.client.model.ExecuteResult; +import com.aizuda.snailjob.common.core.enums.StatusEnum; +import com.aizuda.snailjob.common.core.util.JsonUtil; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Component +@JobExecutor(name = "testUpdateWorkFLowStatusExecutor") +public class TestUpdateWorkFLowStatusExecutor { + public ExecuteResult jobExecute(JobArgs jobArgs) { + Object jobParams = jobArgs.getJobParams(); + Map hashMap = JsonUtil.parseHashMap((String) jobParams); + String id = String.valueOf(hashMap.get("id")); + RequestUpdateStatusHandler updateJobStatus = SnailJobOpenApi.updateWorkFlowStatus(Long.valueOf(id)); + updateJobStatus.setStatus(StatusEnum.NO); + + return ExecuteResult.success(updateJobStatus.execute()); + } +}