一、下载xxl-job项目
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
从GitHub上面将项目clone下来,如果网络问题导致速度慢也可以从Gitee上面拉取:
- GitHub地址:https://github.com/xuxueli/xxl-job
- Gitee地址:https://gitee.com/xuxueli0323/xxl-job
运行项目下doc/db/tables_xxl_job.sql文件,创建需要的表。
打开xxl-job-admin模块,在application.properties中进行后台的配置
修改配置后启动XxlJobAdminApplication类,访问http://localhost:8080/xxl-job-admin 默认账户admn,密码123456。
进来就可以看到主界面了
运行项目中自带的定时任务案例。
在任务管理中查看到对应的任务信息。
设置定时任务执行规则,这里设置每10秒运行一次。
启动任务运行一段时间后停止。
查看调度日志,可以看到每10秒执行一次。
二、在自己的项目中添加xxl-job
添加依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.4.1</version>
</dependency>
将xxl-job案例中配置复制当自己项目中。
logging:
level:
org:
flowable: debug
config: classpath:logback.xml
### xxl-job相关配置
### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
xxl:
job:
admin:
addresses: http://127.0.0.1:8080/xxl-job-admin
accessToken: default_token
executor:
appname: xxl-job-executor-ywz
### ip:
### address:
port: 9999
logpath: /data/applogs/xxl-job/jobhandler
logretentiondays: 30
package org.example.flowabledemo2.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;
/**
* xxl-job config
*
* @author xuxueli 2017-04-28
*/
@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();
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
}
编写一个定时任务。
@Component
public class MySchedule {
@XxlJob("test")
public void test() {
System.out.println("执行任务:" + LocalDateTime.now());
}
}
在任务调度中心新增执行器
在任务管理中新增任务
启动任务进行测试,可以看到任务每10秒执行一次。