一、xxl-job分布任务调度框架部署
1、部署可参考官方文档
https://www.xuxueli.com/xxl-job/
1.1、下载源码
http://gitee.com/xuxueli0323/xxl-job
1.2、执行源码路径下sql语句
/xxl-job/doc/db/tables_xxl_job.sql
1.3、部署“调度中心”项目
解压源码,按照maven格式将源码导入IDE, 使用maven进行编译即可,源码结构如下:
xxl-job-admin:调度中心
xxl-job-core:公共依赖
xxl-job-executor-samples:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器)
:xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器,推荐这种方式;
:xxl-job-executor-sample-spring:Spring版本,通过Spring容器管理执行器,比较通用;
:xxl-job-executor-sample-frameless:无框架版本;
:xxl-job-executor-sample-jfinal:JFinal版本,通过JFinal管理执行器;
:xxl-job-executor-sample-nutz:Nutz版本,通过Nutz管理执行器;
:xxl-job-executor-sample-jboot:jboot版本,通过jboot管理执行器;
1.4、修改“调度中心”项目配置
/xxl-job/xxl-job-admin/src/main/resources/application.properties
调度中心配置内容说明:
我主要修改了数据库配置这一块,其它配置说明看官方文档更清楚
### 调度中心JDBC链接:链接地址请保持和 2.1章节 所创建的调度数据库的地址一致
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
1.5、启动“调度中心”项目
执行完sql后,直接在idea中运行调度中心启动类main方法即可在本地启动这个项目
1.6、访问“调度中心”后台
http://localhost:8080/xxl-job-admin/
用户名/密码: admin/123456
2、部署“执行器示例”项目
刚开始看xxl-job这个分布框架,可以先直接按官方文档部署一下它的实例项目代码,并配置一些测试job
2.1、源码中执行器示例项目
如果调度中心项目的端口没有修改并是在本地部署的话,那么这个执行器示例目的配置不用修改任何,直接运行启动就可运行起来
如果直接在自己业务项目中配执行器,那么可把执行器示例项目中的配置加到自己的项目即可。
2.2、加入依赖
确认pom文件中引入了 “xxl-job-core” 的maven依赖;
<!-- xxl-job-core -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>${project.parent.version}</version>
</dependency>
2.3、配置文件地址:
### 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxl.job.executor.appname=xxl-job-executor-sample
### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
xxl.job.executor.ip=
### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.port=9999
### 执行器通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=
### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
### 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
xxl.job.executor.logretentiondays=30
2.4、执行器组件配置
@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;
}
2.5、新建一个任务bean方式
在项目新建一个方法,执行任务业务逻辑
@Component
public class SampleXxlJob {
private static Logger logger = LoggerFactory.getLogger(SampleXxlJob.class);
/**
* 1、简单任务示例(Bean模式)
*/
@XxlJob("demoJobHandler")
public ReturnT<String> demoJobHandler(String param) throws Exception {
XxlJobLogger.log("XXL-JOB, Hello World.");
System.out.print("test");
System.out.print(DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
for (int i = 0; i < 5; i++) {
XxlJobLogger.log("beat at:" + i);
TimeUnit.SECONDS.sleep(2);
}
return ReturnT.SUCCESS;
}
}
在后台配置
2.6、“GLUE模式(Java)” 任务开发
新增任务
在线编写任务方法
选择GLUE IDE
编写完成后,选择保存
执行测试
可执行一次,查看任务日志,是否执行成功