上级文章:
IDEA快速Sringmvc+Maven:https://blog.csdn.net/qq_28033719/article/details/103411676
XXL-JOB是分布式的定时调度任务较于Quartz,当然作为测试用的话可以单机搭建一个,然后的话后续可以做扩展应用。
先下载一个XXL-JOB的源码项目,直接按照官网的文档搞进行了:
https://www.xuxueli.com/xxl-job/#2.1%20%E5%88%9D%E5%A7%8B%E5%8C%96%E2%80%9C%E8%B0%83%E5%BA%A6%E6%95%B0%E6%8D%AE%E5%BA%93%E2%80%9D
主要是几个步骤:
1、完成主项目启动 2、完成调度项目配置 3、建立定时任务到主项目,测试运行即可
XXL-JOB(xxl-job的后台项目)主要三个文件
(1)sql文件需要把它弄到mysql数据库执行建立相应数据库以及表格(有相应的Oracle版本,但是Oracle指定标识符不超过30字符,XXL-JOB的Oracle版本已经有字段超过30字符,所以不太好用我就没折腾)
(2)application.properties 配置好
### 找到自己改配置
server.port=8080
server.context-path=/xxl-job-admin
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
### 登录账号,这个需要自己加
xxl.job.login.username=admin
xxl.job.login.password=123456
(3)然后 XxlJobAdminApplication.java这个类就启动就可以,访问你指定的URL,按照账号登录
然后是配置调度项目(就是你需要xxl-job调度的项目,或者自己的主项目)
项目里面的pom添加调度任务还有日志
com.xuxueli
xxl-job-core
2.1.1
org.slf4j
log4j-over-slf4j
1.7.25
xxl-job.properties
# log config
logging.config=classpath:logback.xml
### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### xxl-job executor address
xxl.job.executor.appname=xxl-job-executor-sample
xxl.job.executor.ip=
xxl.job.executor.port=9999
### xxl-job, access token
xxl.job.accessToken=
### xxl-job log path
xxl.job.executor.logpath=classpath:/data/applogs/xxl-job/jobhandler
### xxl-job log retention days
xxl.job.executor.logretentiondays=30
DemoJobHandler,创建第一个模板调度任务java类
在xxl-job的后台项目,这里可以拿到完整的,然后复制粘贴到你的主项目,也可以直接在xxl-job运行一下测试
package org.angular.test.xxljob;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import org.springframework.stereotype.Component;
/**
* 任务Handler示例(Bean模式)
* demoJobHandler是你在主项目新建调度任务的命名,需要记住
*/
@JobHandler(value = "demoJobHandler")
@Component
public class DemoJobHandler extends IJobHandler {
@Override
public ReturnT execute(String param) throws Exception {
System.out.println("XXL-JOB Hello World");
return SUCCESS;
}
}
XxlJobConfig.java
xxl-job后台项目,在这里可以拿到完整的
package org.angular.test.xxljob;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
/**
* xxl-job config
*/
@Configuration
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(">>>>>>>>>>> My angularTest 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;
}
/**
* 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
*
* 1、引入依赖:
*
* org.springframework.cloud
* spring-cloud-commons
* ${version}
*
*
* 2、配置文件,或者容器启动变量
* spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
*
* 3、获取IP
* String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
*/
}
然后配好之后,把这个项目启动一下,有任何异常都得先解决再进行。
完成定时调度项目代码和配置后:
最后就是新建定时任务,查看一下官网怎么建立就行,前两个大步骤,xxl-job和自己的主项目都没报错,都不是问题了。剩下毕竟已经是应用级的操作。
看到按秒计算的定时任务跑起来,并且持续输出和定时页面日志也持续输出就表示完成了。
接下来需要两个步骤
1、执行器管理 -> 新建执行器(执行器命名和你项目配置文件,xxl.job.executor.appname的命名一致)
2、任务管理 -> 选好你的执行器下新建任务
如果上面漏了一步,也是怎么也执行不到
然后你的项目控制台得到这样的输出,而且在页面调度日志显示执行成功,就表明你的xxl-job调度程序已经完成,编写你的业务代码吧
下级文章:
XXL-JOB 调度项目重发送retry问题:https://blog.csdn.net/qq_28033719/article/details/103609183
XXL-JOB 项目发送 returnT 的content一直为null:https://blog.csdn.net/qq_28033719/article/details/103610330
XXL-JOB 调度项目发送中文乱码:https://blog.csdn.net/qq_28033719/article/details/103634492
XXL-JOB设置前规则后规则:https://blog.csdn.net/qq_28033719/article/details/103701084