收款定制开发Xxl-job的使用

收款定制开发项目开发中,收款定制开发常常以下场景需要任务调度:
1、收款定制开发同一服务多个实例的任收款定制开发务存在互斥时,需要统一协调
2、定时任务收款定制开发的执行需要支持高可用、监控运维、故障告警
3、收款定制开发需要统一管理和追踪各收款定制开发个服务节点定时任务的运行情况,收款定制开发以及任务属性信息,收款定制开发例如任务所属服务、收款定制开发所属责任人
因此,XXL-JOB应运而生: XXL-JOB收款定制开发是一个开源的轻量级分收款定制开发布式任务调度平台,收款定制开发其核心设计目标是开发迅速、学习简单、轻量级、易扩展、开箱即用,其中“XXL”收款定制开发是主要作者,收款定制开发大众点评许雪里名字的缩写

自2015年开源以来,已接入数百家公司的线上产品线,接入场景涉及电商业务,O2O业务和大数据作业等(官方文档中可查看众多使用xxl-job的公司)

xxl-job是一个开源的任务调度平台,很多公司在使用时,会增加或修改自己的内部版本,所以你学到的教程与实际使用可能有一些差异,但是基本流程、结构上都是相同的

Xxl-job执行原理

最近更新的xxl-job官方版本注意点:
第一:多集群服务器,如何让定时任务只执行一次
答案:使用调度中心,来管理触发器(corn也就是表达式),触发器的数据,执行器的数据,任务数据等放在db数据库中
第二:@JobHandler注解被@XxlJob替换掉了
@JobHandler 只能作用在类上,切该类还要实现某一个类
@XxlJob 针对的是方法

一、xxl-job的下载安装

1.1去xxl-job官网或GitHub拿到项目之后,运行项目中的db下的数据库文件tables_xxl_job.sql,初始化数据库,建立表信息,持久化配置

- xxl_job_lock:任务调度锁表;- xxl_job_group:执行器信息表,维护任务执行器信息;- xxl_job_info:调度扩展信息表: 用于保存XXL-JOB调度任务的扩展信息,如任务分组、任务名、机器地址、执行器、执行入参和报警邮件等等;- xxl_job_log:调度日志表: 用于保存XXL-JOB任务调度的历史信息,如调度结果、执行结果、调度入参、调度机器和执行器等等;- xxl_job_log_report:调度日志报表:用户存储XXL-JOB任务调度日志的报表,调度中心报表功能页面会用到;- xxl_job_logglue:任务GLUE日志:用于保存GLUE更新历史,用于支持GLUE的版本回溯功能;- xxl_job_registry:执行器注册表,维护在线的执行器和调度中心机器地址信息;- xxl_job_user:系统用户表;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

1.2 配置文件
打开xxl-job-admin模块,在application.properties中进行后台的配置(官网上拿的模板)

### 调度中心JDBC链接:链接地址请保持和 2.1章节 所创建的调度数据库的地址一致,注意在数据库地址哪里加上时区属性,否则乱码spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghaispring.datasource.username=rootspring.datasource.password=root_pwdspring.datasource.driver-class-name=com.mysql.jdbc.Driver### 报警邮箱spring.mail.host=smtp.qq.comspring.mail.port=25spring.mail.username=xxx@qq.comspring.mail.password=xxxspring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.smtp.starttls.enable=truespring.mail.properties.mail.smtp.starttls.required=truespring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory### 调度中心通讯TOKEN [选填]:非空时启用;xxl.job.accessToken=### 调度中心国际化配置 [必填]: 默认为 "zh_CN"/中文简体, 可选范围为 "zh_CN"/中文简体, "zh_TC"/中文繁体 and "en"/英文;xxl.job.i18n=zh_CN## 调度线程池最大线程配置【必填】xxl.job.triggerpool.fast.max=200xxl.job.triggerpool.slow.max=100### 调度中心日志表数据保存天数 [必填]:过期日志自动清理;限制大于等于7时生效,否则, 如-1,关闭自动清理功能;xxl.job.logretentiondays=30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

如果已经正确进行上述配置,可将项目编译打包部署。
调度中心访问地址:http://localhost:8080/xxl-job-admin (该地址执行器将会使用到,作为回调地址),默认登录账号 “admin/123456”, 登录后运行界面如下图所示。

二、调度中心添加执行器

这一步你可以先把客户端(就是你写的代码,也就是具体执行的接口或者说执行器)先写好,再来调度中心配置执行器也可以
点击新增执行器

客户端编写执行器代码

1、在项目中引入xxl-job-core的依赖包
2、在配置文件中配置执行器的地址,此地址不是整个项目运行的地址,比如Tomcat配置8080,那么执行器可以配置9999,别的端口号
如下图

官网的配置模板:

### 调度中心部署根地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin### 执行器通讯TOKEN [选填]:非空时启用;xxl.job.accessToken=### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册xxl.job.executor.appname=xxl-job-executor-sample### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。xxl.job.executor.address=### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";xxl.job.executor.ip=### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;xxl.job.executor.port=9999### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler### 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;xxl.job.executor.logretentiondays=30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3、写一个执行器,新建一个类(我使用Bean模式开发,也可以去官网看继承IJobHandler的那一种方式)
Bean模式任务,支持基于方法的开发方式,每个任务对应一个方法。
优点:
每个任务只需要开发一个方法,并添加”@XxlJob”注解即可,更加方便、快速。
支持自动扫描任务并注入到执行器容器。

1、任务开发:在Spring Bean实例中,开发Job方法;2、注解配置:为Job方法添加注解 "@XxlJob(value="自定义jobhandler名称", init = "JobHandler初始化方法", destroy = "JobHandler销毁方法")",注解value值对应的是调度中心新建任务的JobHandler属性的值。3、执行日志:需要通过 "XxlJobHelper.log" 打印执行日志;4、任务结果:默认任务结果为 "成功" 状态,不需要主动设置;如有诉求,比如设置任务结果为失败,可以通过 "XxlJobHelper.handleFail/handleSuccess" 自主设置任务结果;
  • 1
  • 2
  • 3
  • 4
// 可参考Sample示例执行器中的 "com.xxl.job.executor.service.jobhandler.SampleXxlJob" ,如下:@XxlJob("demoJobHandler")public void demoJobHandler() throws Exception {    XxlJobHelper.log("XXL-JOB, Hello World.");}
  • 1
  • 2
  • 3
  • 4
  • 5

在执行器里,写你要固定时间执行,或者每隔一段时间执行的任务内容
启动服务,调度中心那边新增任务,就可以开始执行任务了

四、调度中心任务管理里,新增任务


点击确认,就可以看到代码在执行了
可以在任务管理,执行或者暂停任务

xxl-job的使用介绍完毕,想更细致了解,建议去官方文档看

下一篇 介绍原理与负载均衡策略

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发