XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
登录以下地址查询详细搭建步骤: https://www.cnblogs.com/xuxueli/p/5021979.html
点开链接,复制https的地址,使用idea克隆项目,该项目是一个maven项目
idea克隆完成后,打开File->Settings,去设置maven配置
这里是我自己的,根据你们电脑上的进行设置。设置完成后重新编译一下,项目结构如下
在本地的mysql中新建一个名为xxl_job的数据库,并执行克隆项目的tables_xxl_job.sql脚本
打开文件地址,xxl-job-admin\src\main\resources\application.properties
设置数据库连接,连接到自己本地刚建好的xxl_job数据库,如下图:
启动成功如下图:
访问:http://localhost:8080/xxl-job-admin,默认账号:admin,密码:123456
成功如下图:
到目前为止,本地xxl环境算搭建好了,接下来自己springboot项目要使用xxl
XXL是注册服务,上面基本可以用了,接下来是在自己的项目上使用,xxl-job这个项目启动就行,其他不用管。以下操作都是对express_sx_admin项目进行操作的
<dependency>
<groupId>com.xuxueligroupId>
<artifactId>xxl-job-coreartifactId>
<version>2.3.0version>
dependency>
因为搭建的xxl-job的版本是2.3.0,所以自己项目引入的也是2.3.0的,版本要一致。
xxl:
job:
admin:
### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
addresses: http://127.0.0.1:8080/xxl-job-admin
### xxl-job executor address
executor:
appname: express-sx-admin
ip: 127.0.0.1
port: 9199
### xxl-job log path
logpath: /apps/logs/express-sx-admin/jobhandler
### xxl-job log retention days
logretentiondays: 90
### xxl-job, access token
accessToken:
xxl.job.admin.addresses:“部署项目”中的登录地址
xxl.job.executor.appname:“执行器管理”页面中的AppName
xxl.job.executor.ip:执行地址,“执行器管理”页面中的“机器地址”的ip
xxl.job.executor.port:执行地址端口,“执行器管理”页面中的“机器地址”的端口
package com.myqxin.sx.common.config;
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;
@Configuration
//@ComponentScan(basePackages = "com.myqxin.sx.commone.jobHandler")
public class XxlJobConfig {
private 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;
}
}
package com.myqxin.sx.common.config.task;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component
public class SampleXxlJob {
private static Logger logger = LoggerFactory.getLogger(SampleXxlJob.class);
@XxlJob("sxmyqxin")
public ReturnT<String> sxMyqxin(String param) throws Exception {
System.err.println("xxl定时任务执行了");
return ReturnT.SUCCESS;
}
}
corn表达式生成地址:https://cron.qqe2.com/