✅本地运行方式
✅1.下载源码
✅2.执行SQL脚本

✅3.配置数据库、用户名、密码


✅4.调度中心
启动
访问地址:http://localhost:8080/xxl-job-admin (该地址执行器将会使用到,作为回调地址)
默认登录账号 "admin/123456", 登录后运行界面如下图所示。

✅5.项目依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.1</version>
</dependency>
✅6.Yaml

xxl:
job:
admin:
addresses: http://127.0.0.1:8080/xxl-job-admin
accessToken: default_token
executor:
appname: jc-club-subjcet
address:
ip: 127.0.0.1
port: 9999
logpath: /data/applogs/xxl-job/jobhandler
logretentiondays: 30
✅7.执行器

@Component
@Slf4j
public class SyncLikedJob {
@Resource
private SubjectLikedDomainService subjectLikedDomainService;
@XxlJob("syncLikedJobHandler")
public void syncLikedJobHandler() throws Exception {
XxlJobHelper.log("syncLikedJobHandler.start");
try {
subjectLikedDomainService.syncLiked();
log.info("123456");
}catch (Exception e){
XxlJobHelper.log("syncLikedJobHandler.error"+ e.getMessage());
}
}
}
✅Docker方式
✅下载镜像
docker pull xuxueli/xxl-job-admin:2.4.0
✅执行SQL脚本
doc/db/tables_xxl_job.sql · 许雪里/xxl-job - Gitee.com
✅创建容器并运行
docker run -d \
--name xxl-job-admin \
-e PARAMS=" \
--spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai \
" \
-p 8080:8080 \
-v /tmp:/data/applogs \
xuxueli/xxl-job-admin:2.4.0
✅项目依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.4.0</version>
</dependency>
✅Yaml
xxl:
job:
# 调度中心地址(多个用逗号分隔)
admin:
addresses: http://127.0.0.1:8080/xxl-job-admin //容器地址
accessToken: default_token //不设置就是默认 要设置在docker run的时候设置
timeout: 3 //超时
# 执行器配置
executor:
# 执行器唯一标识(AppName),用于分组和注册
appname: xxl-job-executor-sample //
# 手动指定注册地址(可选,用于容器化部署)
address:
# 执行器IP(为空自动获取)
ip:
# 执行器端口(<=0 表示自动获取)
port: 9999
# 任务日志存储路径
logpath: /data/applogs/xxl-job/jobhandler
# 日志保留天数(>=3生效,-1表示不清理)
logretentiondays: 30
xxl:
job:
admin:
addresses: https://{}/xxl-job-admin
executor:
appname: coefficient
ip:
port: 9999
logretentiondays: 30
logpath: /data/applogs/xxl-job/jobhandler
accessToken: aaPosyber@2025d
✅配置类
@Configuration
public class XxlJobConfig {
@Value("${xxl.job.admin.addresses}")
private String addresses;
@Value("${xxl.job.executor.appname}")
private String appname;
@Value("${xxl.job.executor.port}")
private Integer port;
@Value("${xxl.job.executor.logretentiondays}")
private Integer logretentiondays;
@Value("${xxl.job.executor.logpath}")
private String logpath;
@Value("${xxl.job.executor.accessToken}")
private String accessToken;
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(addresses);
xxlJobSpringExecutor.setAppname(appname);
xxlJobSpringExecutor.setAddress(null);
xxlJobSpringExecutor.setIp(null);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logpath);
xxlJobSpringExecutor.setLogRetentionDays(logretentiondays);
return xxlJobSpringExecutor;
}
}
✅执行器
@Slf4j
@Component
@RequiredArgsConstructor
public class LeaveJob {
private final CelvService celvService;
// private final CelvlaService celvLaService;
private final CelvlcService celvLcService;
@Value("${annualLeaveFlag:prod}")
private String annualLeaveFlag;
@Resource
private final CeService ceService;
//@Scheduled(cron = "0 01 14 * * *")
@XxlJob("initCelvAndCelvsm")
public void initLeaveBaseDataAsCelv() {
log.info("---------------cronjob initLeaveBaseDataAsCelv start ");
celvService.initCelvAndCelvsm(null);
log.info("---------------cronjob initLeaveBaseDataAsCelv end ");
}
}