搭建过程
拉取源码
使用Git命令从GitHub或Gitee拉取XXL-JOB项目
GitHub项目地址为:https://github.com/xuxueli/xxl-job/
Gitee项目地址为:https://gitee.com/xuxueli0323/xxl-job
拉取源码命令如下:
1 2 3 4 5
| git clone https://github.com/xuxueli/xxl-job.git
git clone https://gitee.com/xuxueli0323/xxl-job.git
|
导入数据库
数据库文件在 xxl-job\doc\db 目录下,数据库新建一个名为 xxl_job 的数据库,并导入该数据库文件
idea导入项目
导入 idea 后,配置 JDK ,然后修改 xxl-job-admin 模块下的配置文件 application.properties ,找到数据库配置并修改成自己的数据库配置
1 2 3 4 5
| spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
|
运行项目
可以直接在 idea 上运行,也可以打包成 jar 包后运行
直接运行
直接启动 xxl-job-admin 模块的 XxlJobAdminApplication.java 文件即可,浏览器地址栏输入:http://localhost:8080/xxl-job-admin/,用户名为:admin,密码为:123456
打包成 jar 包
直接点击 Maven 工具栏的 xxl-job 模块的 package 按钮即可打包成 jar 包
打包好的文件在 xxl-job-admin 模块的 target 文件夹中,名称为:xxl-job-admin-2.3.0.jar ,如果看不到 target 文件夹,就点击 Project 栏右上角的设置按钮并且选择 Show Excluded Files ,打勾代表已启用
使用 CMD 命令进入 jar 包所在文件夹,使用下面命令启动项目
1
| java -jar xxl-job-admin-2.3.0.jar
|
在项目中使用
新建一个 Spring Boot 项目,命名为:xxlJobDemo,新建项目时直接选择 Spring Web 依赖
引入依赖
1 2 3 4 5 6
| <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.2.0</version> </dependency>
|
新建logback.xml
在 resources 目录下,添加 logback.xml 文件,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <?xml version="1.0" encoding="UTF-8"?> <configuration debug="false" scan="true" scanPeriod="1 seconds"> <contextName>logback</contextName> <property name="log.path" value="E:/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log"/> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern> </rollingPolicy> <encoder> <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n </pattern> </encoder> </appender> <root level="info"> <appender-ref ref="console"/> <appender-ref ref="file"/> </root> </configuration>
|
修改application.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| server.port=8888
logging.config=classpath:logback.xml spring.application.name=xxlJobDemo
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
xxl.job.accessToken=
xxl.job.executor.appname=xxlJobDemo
xxl.job.executor.address=
xxl.job.executor.ip=
xxl.job.executor.port=9999
xxl.job.executor.logpath=E:/data/applogs/xxl-job/jobhandler
xxl.job.executor.logretentiondays=10
|
新建XXL-JOB配置类
新建一个 XXL-JOB 配置类,命名为:XxlJobConfig.java,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| package com.ldeao.xxljobdemo.config;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;
@Configuration public class XxlJobConfig {
private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class); @Value("${xxl.job.admin.addresses}") private String adminAddresses; @Value("${xxl.job.accessToken}") private String accessToken; @Value("${xxl.job.executor.appname}") private String appname; @Value("${xxl.job.executor.address}") private String address; @Value("${xxl.job.executor.ip}") private String ip; @Value("${xxl.job.executor.port}") private int port; @Value("${xxl.job.executor.logpath}") private String logPath; @Value("${xxl.job.executor.logretentiondays}") private int logRetentionDays;
@Bean public XxlJobSpringExecutor xxlJobExecutor() { logger.info(">>>>>>>>>>> xxl-job config init."); XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses(adminAddresses); xxlJobSpringExecutor.setAppname(appname); xxlJobSpringExecutor.setAddress(address); xxlJobSpringExecutor.setIp(ip); xxlJobSpringExecutor.setPort(port); xxlJobSpringExecutor.setAccessToken(accessToken); xxlJobSpringExecutor.setLogPath(logPath); xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); return xxlJobSpringExecutor; } }
|
新建任务类
新建一个定时任务类,命名为:Test.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| package com.ldeao.xxljobdemo.xxljobhandler;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.log.XxlJobLogger; import org.springframework.stereotype.Component;
@Component public class Test {
@XxlJob("demoJobHandler1") public ReturnT<String> demoJobHandler1(String param) throws Exception { System.out.println("java, Hello World~~~"); XxlJobLogger.log("java, Hello World~~~"); XxlJobLogger.log("param:" + param); return ReturnT.SUCCESS; } }
|
启动项目
按 Spring Boot 方式启动即可,点击 idea 的启动按钮或者直接运行 XxlJobDemoApplication.java 这个类
将定时任务添加到XXL-JOB
添加执行器
在执行器管理界面添加一个执行器,表单填写要求如下:
- AppName 填 xxlJobDemo ,要与 application.properties 配置的一致
- 名称可以根据自己的情况填写,填项目名称即可
- 注册方式选自动注册时不要填机器地址,选手动录入则需要填写机器地址,所以直接选自动注册即可
添加任务
在任务管理界面添加一个任务,表单填写要求如下:
- 执行器选刚刚创建的 xxlJobDemo
- 任务描述和负责人根据实际情况填写
- 调度类型选 CRON ,Cron 点击编辑选择即可
- 运行模式选择 BEAN,JobHandler 填定时任务类的对应方法(要和Bean的名称一致)
- 其它的默认就行
启动任务
在任务管理中找到指定任务,然后启动它即可,可以执行一次,然后去 idea 控制台查看结果