关于如何本地启动xxl-job,并且整合SpringBoot
1. 本地安装xxl-job并启动
- 拉取xxl-job的代码
git clone git@github.com:xuxueli/xxl-job.git
- 配置xxl-job数据库
拉取代码后,代码的doc/db
目录下有官方配置好的sql脚本,执行里面的sql脚本至本地数据库
3. 修改xxl-job默认的数据库配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root # mysql用户名
spring.datasource.password=xiaoqian666 # mysql密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
- 本地启动
启动后,访问http://localhost:8080/xxl-job-admin/
即可。
2. 整合SpringBoot
- 引入依赖
<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.4.0</version>
</dependency>
- 增加xxl-job的配置
xxl:job:admin:addresses: http://127.0.0.1:8080/xxl-job-adminaccessToken: "default_token"executor:appname: test-xxl-job # 任务执行器的名称address: ""ip: ""port: 9999logpath: ./logs/xxl-joblogretentiondays: 30
- 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** @author xuxueli 2017-04-28*/
@Configuration
public class XxlJobConfiguration {private Logger logger = LoggerFactory.getLogger(XxlJobConfiguration.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;@Beanpublic 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定时任务
使用@XxlJob注解指定任务名
@Component
@Slf4j
@RequiredArgsConstructor
public class JobHandler {@XxlJob("testJob") // 任务名public ReturnT<String> testJob(String param) {XxlJobHelper.log("testJob handler is running...");XxlJobHelper.handleSuccess("输出ProductReport完成");log.debug("xxl job 启动任务" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));return ReturnT.SUCCESS;}
}
- 控制台新增任务执行器
任务执行器的名称要和xxl-job
的appname
一致,名称就是备注,其他默认
- 控制台新增任务
- 执行任务
在任务管理处,可以对指定任务立即执行一次,也可以启动任务,任务会按照cron
表达式定时执行