一、先去Gitee中拉取源码 https://gitee.com/xuxueli0323/xxl-job
二、在自己的项目中生产数据库
三
三、启动XxlJobAdminApplication类,访问http://localhost:8080/xxl-job-admin
1.默认账户admn
2.密码是123456
四、 项目中引入依赖
<!--configurationProperties依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
<!--xxl-job-->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.1</version>
</dependency>
五、添加配置
@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;
}
}
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
xxl.job.accessToken=default_token
xxl.job.executor.appname=xxl-job-executor-sample
xxl.job.executor.address=
xxl.job.executor.ip=127.0.0.1
xxl.job.executor.port=9999
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
xxl.job.executor.logretentiondays=30
六、定时任务(删除数据库没有但是minio中有的图片)
@Component
@RequiredArgsConstructor
public class HealthTask {
private final MinioUtils minioUtils;
private final ITSetmealService setmealService;
@XxlJob("clearImageHandler")
public void clearImage() {
// 获取minio中所有图片名称
List<String> imageNames = minioUtils.list();
// 获取数据库中所有图片
List<String> images = setmealService.getImages();
// 求minio中多余的图片
List<DeleteObject> deleteImages = imageNames.stream()
.filter(imageName -> !images.contains(imageName))
.map(DeleteObject::new)
.collect(Collectors.toList());
// 删除minio中多余的图片
minioUtils.deleteBatch(deleteImages);
}
}