刚工作时,最先接触到的定时任务工具就是xxl-job,后面就被别的工具替代了,在此记录下,整合spring-boot项目。
一、搭建xxl-job
1、git拉取xxl-job的项目代码
https://gitee.com/xuxueli0323/xxl-job
2、项目拉到本地后,找到xxl-job的sql文件,在自己的数据库运行导入需要用到的基础表。
3、然后修改配置文件中的数据库连接信息和设置一个自己喜欢的端口和路径(注意端口不能重复)。
4、然后就可以启动服务。
5、在网页中输入http://127.0.0.1:端口号/路径/,如果端口号和路径你都没有修改,那默认为http://127.0.0.1:8080/xxl-job-admin/,默认账号为admin,默认密码为123456
二、就是如何在你的服务中使用xxl-joib。
1、首先是需要在pom文件引入
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.0</version>
</dependency>
2、其次是需要配置yml文件,这里注意端口号port:不能与你的服务端口号重复
xxl:
job:
accessToken:
admin:
addresses: http://127.0.0.1:4567/xxl-job-admin/
executor:
appname: dayuan
ip: 127.0.0.1
port: 7777
logpath:
logretentiondays: 30
3、以及xxl-job的配置类
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
*/
@Configuration
public class XxlJobConfig {
private final Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
@Value("${xxl.job.executor.appname}")
private String appName;
@Value("${xxl.job.executor.ip}")
private String ip;
@Value("${xxl.job.executor.port}")
private int port;
@Value("${xxl.job.accessToken}")
private String accessToken;
@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.setIp(ip);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
}
4、配置完成后在需要定时调用的方法加上注解@XxlJob(value = "XXX")即可。
@XxlJob("aiyuan")
public ReturnT<String> execute(String s) throws Exception {
System.out.println("大媛是个美女(^-^)V"+ " "+ LocalDateTime.now());
return ReturnT.SUCCESS;
}
5、在xxl-job上配置执行器,也就是你的定时任务所部署的服务,如果你的服务做了高可用,可以配置多个地址,用逗号隔开
6、新增定时任务配置。
7、接下来就可以启动定时任务、手动执行、查看日志等操作。
最后,提一下后面是如何出路定时任务的。由于公司接口管控要求,外购了接口平台,其中有编排功能可以设置定时调用,还可以调用失败发送邮件以及推送给钉钉机器人等,还是比较方便的。