# task-scheduler-demo **Repository Path**: jiangtianlun123/task-scheduler-demo ## Basic Information - **Project Name**: task-scheduler-demo - **Description**: 使用dolphinscheduler调度SpringBoot中任务配置方式 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-04-19 - **Last Updated**: 2022-04-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # task-scheduler-demo #### 介绍 使用dolphinscheduler调度SpringBoot中任务配置方式 #### 基本配置参数 1. MySQL=5.7.20 2. Zookeeper=3.7.0 3. JDK=1.8.x 4. SpringBoot=2.6.1 5. Dolphinscheduler=1.3.9 #### 使用SpringBoot创建任务工程 1. 注意POM配置,创建的SpringBoot工程默认使用JarLauncher来启动,需要修改为PropertiesLauncher启动,修改方法为增加ZIP配置,具体如下 ```xml org.springframework.boot spring-boot-maven-plugin ZIP ``` #### 示例一:直接调度简单的Java启动类 1. 创建Java启动类,如下 ```java package com.example.task; public class YyTask { public static void main(String[] args) { System.out.println("Hell yy"); } } ``` 2. 使用SpringBoot打包后,整个jar输出名称为 "task-scheduler-demo-0.0.1-SNAPSHOT.jar" 3. 将jar执行包上传至dolphinscheduler平台的"资源中心 > 文件管理" 4. 创建工程流调用jar包,主要执行脚本参考如下: ```shell script java -Dloader.main=com.example.task.YyTask -jar task-scheduler-demo-0.0.1-SNAPSHOT.jar ``` 5. 配置任务形成工作流即可 #### 示例二:调用带有参数的Java任务 ```java package com.example.task; public class DdTaskWithParam { public static void main(String[] args) { System.out.println("Hell dd"); if(args != null && args.length > 0){ for(String param: args){ System.out.println("Param:" + param); } } } } ``` dolphinscheduler调用参考脚本 ```shell script java -Dloader.main=com.example.task.DdTaskWithParam -jar task-scheduler-demo-0.0.1-SNAPSHOT.jar p01 p02 ``` 注意:p01、p02可借助Shell脚本动态传入,例如获取当前系统格式化时间传入 ```shell script # 20211216 start=`date '+%Y%m%d'` java -Dloader.main=com.example.task.DdTaskWithParam -jar task-scheduler-demo-0.0.1-SNAPSHOT.jar $start p02 ``` #### 示例三:调用依赖Spring容器中的任务 此处一种方法是自定义静态类,初始化Spring容器时,赋值;另一种方法是通过hutool工具调用类名来实现; ```java package com.example.task; import cn.hutool.extra.spring.SpringUtil; import org.springframework.boot.SpringApplication; import org.springframework.context.annotation.ComponentScan; @ComponentScan("com.example") public class CcTask { public static void main(String[] args) { System.out.println("------1:启动SpringBoot-----"); SpringApplication.run(CcTask.class, args); System.out.println("------2:启动后,调用Spring容器中对象-----"); SampleRevoke sampleRevoke = SpringUtil.getBean(SampleRevoke.class); sampleRevoke.execute(); System.out.println("------3:结束-----"); } } ``` 注意:上面必需使用ComponentScan扫描需要加载的类,否则Spring容器不会加载,导致后续会找不到目标类。 dolphinscheduler调用参考脚本 ```shell script java -Dloader.main=com.example.task.CcTask -jar task-scheduler-demo-0.0.1-SNAPSHOT.jar ``` #### 总结 通过以上方式,可实现dolphinscheduler对SpringBoot工程中的任务进行配置,该方式的好处在于,首先,通过SpringBoot可快速开发任务。 其次,结合dolphinscheduler本身强大的调度功能,可任务进行配置,可保证调度任务运行稳定。