前言
最近项目中涉及到了定时任务相关需求,最终选择了分布式任务调度框架xxl-job,由于我们在使用xxl-job。这里对xxl-job 一些使用做一下简单介绍。
手动定时任务
xxl-job 主要分为一个展示web的独立服务,另外一个是我们项目引入xxl-job依赖,对定时任务做监听。这里不对xxl-job 部署独立服务做介绍,主要介绍如何引入xxl-job依赖进行创建定时任务。
一、配置yml
# 定时任务中心配置信息
job:
server:
enabled: true
# 校验令牌,和服务器保持一致
accessToken: accessToken
userName: admin
password: xxx
jobGroup: 1
admin:
# 定时任务中心地址,通过环境变量取值,(预发布环境需填写预发布的域名,不然会调到开发环境的服务)
addresses: https://job-centerxx.com
executor:
# 执行器名称
appname: middle-executor
# 执行器的注册地址
address:
二、xxl-job 依赖
<!-- xxl-job-core -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.0</version>
</dependency>
三、xxl-job 启动
@Slf4j
@Configuration
@Getter
public class JobServerConfig {
@Value("${job.server.admin.addresses}")
private String adminAddresses;
@Value("${job.server.accessToken}")
private String accessToken;
@Value("${job.server.executor.appname}")
private String appname;
@Value("${job.server.executor.address}")
private String address;
@Value("${job.server.userName}")
private String userName;
@Value("${job.server.password}")
private String password;
@Value("${job.server.jobGroup}")
private String jobGroup;
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
log.info(">>>>>>>>>>> job-server config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppname(appname);
xxlJobSpringExecutor.setAddress(address);
xxlJobSpringExecutor.setAccessToken(accessToken);
return xxlJobSpringExecutor;
}
}
四、xxl-job 定时任务处理
/**
* 工单生成
*/
@XxlJob("patrolGenerateHandler")
public void maintenanceBeginNoticeHandler() {
long taskId = 0;
try {
String param = XxlJobHelper.getJobParam();
taskId = Long.parseLong(param);
System.out.println("工单生成");
} catch (Exception e) {
log.error("patrolGenerateHandler fail taskId is {}", taskId, e);
}
}
五、web端配置对应的定时任务