* 概述 |
XXL-JOB是一个轻量级分布式任务调度框架,官网说的是1分钟上手,不过内容确实有些多,我在官网的基础上提炼了一下帮助官网实现一分钟上手。XXL-JOB可以分为两大块调度中心和执行器。
调度中心:负责管理执行器和执行中的任务,在这里我们可以配置执行器集群,任务的调动方式,调度时间。
执行器:负责执行具体的任务。
上面的定义是我自己的话,可能有些low,同时比较偏实践,官方的解释是:调度中心:负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高系统的稳定性和可用性,同时调度系统性能不再受限于任务模块,支持可视化,动态的管理调度信息,同时支持监控调度结构和日志查看。执行器:负责接受调度请求并执行任务逻辑。任务模块专注于任务的执行,开发和维护更加简单高效。
* 快速上手 |
所需要的安装包和文档,均可以在https://github.com/xuxueli/xxl-job下载。
下载项目源码并解压,获取 “调度数据库初始化SQL脚本” 并执行即可,正常情况下应该生成16张表。”调度数据库初始化SQL脚本” 位置为:
/xxl-job/xxl-job-admin/src/main/resources/xxl-job-admin.properties
调度中心的配置如下:
### 调度中心JDBC链接:链接地址请保持和 2.1章节 所创建的调度数据库的地址一致
xxl.job.db.driverClass=com.mysql.jdbc.Driver
xxl.job.db.url=jdbc:mysql://localhost:3306/xxl-job?useUnicode=true&characterEncoding=UTF-8
xxl.job.db.user=root
xxl.job.db.password=root_pwd
### 报警邮箱
xxl.job.mail.host=smtp.163.com
xxl.job.mail.port=25
xxl.job.mail.ssl=false
xxl.job.mail.username=ovono802302@163.com
xxl.job.mail.password=asdfzxcv
xxl.job.mail.sendFrom=ovono802302@163.com
xxl.job.mail.sendNick=《任务调度平台XXL-JOB》
### 登录账号
xxl.job.login.username=admin
xxl.job.login.password=123456
### 调度中心通讯TOKEN,非空时启用
xxl.job.accessToken=
### 调度中心国际化设置,默认为中文版本,值设置为“en”时切换为英文版本
xxl.job.i18n=
如果已经正确进行上述配置,可将项目编译打war包并部署到tomcat中。 调度中心访问地址:http://localhost:8080/xxl-job-admin (该地址执行器将会使用到,作为回调地址),登录后运行界面如下图所示,表示已经部署成功。
pom文件中引入了 “xxl-job-core” 的maven依赖,如下:
<dependency>
<groupId>com.xuxueligroupId>
<artifactId>xxl-job-coreartifactId>
<version>1.9.0version>
dependency>
复制一份xxl-job-executor.properties,加入项目中,内容如下:
### xxl-job admin address list:调度中心部署跟地址(具体ip地址,下面省略了)
xxl.job.admin.addresses=192.168.?.?:8080 /xxl-job-admin/
### xxl-job executor address:执行器"AppName"名称,要保持唯一;执行器默认端口为9999,执行器IP为本机ip;单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.appname=xxl-job-executor-sample
xxl.job.executor.ip=localhost
xxl.job.executor.port=9998
### xxl-job, access token:执行器通讯TOKEN,非空时启用
xxl.job.accessToken=
### xxl-job log path:执行器运行日志文件存储的磁盘位置,需要对该路径拥有读写权限
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler/
### xxl-job log retention days:执行器Log文件定期清理功能,指定日志保存天数,日志文件过期自动删除。限制至少保持3天,否则功能不生效;
xxl.job.executor.logretentiondays=-1
注意:在项目中读取配置文件的xml中添加,只要添加xxl-job-executor.properties的部分即可。
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.propertiesvalue>
<value>classpath:xxl-job-executor.propertiesvalue>
list>
property>
bean>
<context:component-scan base-package="com.xxl.job.executor.service.jobhandler" />
<bean id="xxlJobExecutor" class="com.xxl.job.core.executor.XxlJobExecutor" init-method="start" destroy-method="destroy" >
<property name="adminAddresses" value="${xxl.job.admin.addresses}" />
<property name="appName" value="${xxl.job.executor.appname}" />
<property name="ip" value="${xxl.job.executor.ip}" />
<property name="port" value="${xxl.job.executor.port}" />
<property name="accessToken" value="${xxl.job.accessToken}" />
<property name="logPath" value="${xxl.job.executor.logpath}" />
<property name="logRetentionDays" value="${xxl.job.executor.logretentiondays}" />
bean>
在和上面的配置JobHandler 扫描路径一致的包中新建执行器类,执行器类继承IJobHandler,并且添加注解@JobHandler(value=”jobtest”),一定要写value,且value值等于页面用BEAN模式运行任务时,JobHandler的名称
@JobHandler(value="jobtest")
@Component
public class job_test extends IJobHandler {
@Override
public ReturnT execute(String s) throws Exception {
try {
System.out.println("测试~~~");
/*测试数据*/
return SUCCESS;
} catch (Exception e){
e.printStackTrace();
return FAIL;
}
}
}
这里选择手动建立,需要将Online地址和执行器中配置的地址一致。
在任务管理器中添加任务:
* 架构图 |
如果可以有宏观的认识的话,那么看一张架构图是很有必要的。
* 后续 |
这是我们的项目使用xxl-job的一些基本配置,到这里便可以使用了。后续会和大家分享一下xxl-job的使用心得,以及当执行器所在的服务器压力过大是又该如何操作呢?我们需要优化,如何优化,如果你也感兴趣,可以继续关注我。
感谢您宝贵的阅读时间。
参考资料:xxl-job官网 https://www.cnblogs.com/xuxueli/p/5021979.html