「Java」Java项目中使用XXL-JOB调度框架( 二 )


  • 脚本任务:支持以GLUE模式开发和运行脚本任务 , 包括Shell、Python、NodeJS、PHP、PowerShell等类型脚本;
  • 命令行任务:原生提供通用命令行任务Handler(Bean任务 , ”CommandJobHandler”);业务方只需要提供命令行即可;
  • 任务依赖:支持配置子任务依赖 , 当父任务执行结束且执行成功后将会主动触发一次子任务的执行 多个子任务用逗号分隔;
  • 一致性:“调度中心”通过DB锁保证集群分布式调度的一致性 一次任务调度只会触发一次执行;
  • 自定义任务参数:支持在线配置调度任务入参 , 即时生效;
  • 调度线程池:调度系统多线程触发调度运行 , 确保调度精确执行 , 不被堵塞;
  • 数据加密:调度中心和执行器之间的通讯进行数据加密 , 提升调度信息安全性;
  • 邮件报警:任务失败时支持邮件报警 , 支持配置多邮件地址群发报警邮件;
  • 推送maven中央仓库: 将会把最新稳定版推送到maven中央仓库 方便用户接入和使用;
  • 运行报表:支持实时查看运行数据 , 如任务数量、调度次数、执行器数量等;以及调度报表 , 如调度日期分布图 , 调度成功分布图等;
  • 全异步:任务调度流程全异步化设计实现 , 如异步调度、异步运行、异步回调等 , 有效对密集调度进行流量削峰 , 理论上支持任意时长任务的运行;
  • 跨语言:调度中心与执行器提供语言无关的 RESTful API 服务 , 第三方任意语言可据此对接调度中心或者实现执行器 。 除此之外 , 还提供了 “多任务模式”和“httpJobHandler”等其他跨语言方案;
  • 国际化:调度中心支持国际化设置 , 提供中文、英文两种可选语言 , 默认为中文;
  • 容器化:提供官方docker镜像 , 并实时更新推送dockerhub , 进一步实现产品开箱即用;
  • 线程池隔离:调度线程池进行隔离拆分 , 慢任务自动降级进入”Slow”线程池 , 避免耗尽调度线程 , 提高系统稳定性;
  • 用户管理:支持在线管理系统用户 , 存在管理员、普通用户两种角色;
  • 权限控制:执行器维度进行权限控制 , 管理员拥有全量权限 , 普通用户需要分配执行器权限后才允许相关操作;
  • 使用这个框架需要一个调度中心(xxl-job-admin) , 这个可以单机或者集群部署 。 下面就简单结束调度中心的部署 。
    调度中心部署1、部署前需要初始化调度中心需要的几个表 , 这个脚本在源码的文件tables_xxl_job.sql中(如果mysql做主从调度中心集群节点务必强制走主库) 。
    2、设置模板xxl-job-admin中的application.properties的服务端口 , 数据库信息和邮件配置信息 。
    3、可以打包模板xxl-job-admin为单个jar包 , 可以部署到对应的服务器中 。
    以本地为例 , 启动后输入账号密码admin/123456后的页面如下:
    调度中心
    这个页面最常用的就是任务管理和调度日志页面 , 如果开发了新的任务 , 需要在任务管理页面添加 。
    开发执行器1、首先 , 需要配置一个XxlJobSpringExecutor , 可以在配置文件或者配置类中 。 如果想自动注册必须设置xxl.job.admin.addresses和xxl.job.executor.appname 。
    详细如下:
    配置信息
    2、Bean模式的有两种实现 , 类形式和方法形式
    • 类形式 , 继承IJobHandler接口 , 实现execute方法 , 返回ReturnT实例 。 最后在类上添加XxlJob注解
    • 方法形式 , 要求方法的格式为:“public ReturnT<String> execute(String param)” , 在方法上添加XxlJob注解

    xxljob
    在调度中心注册执行器和添加任务1 , 打开admin页面 , 在执行器管理菜单中 , 添加一个执行器 , 可以是自动注册或者是手动注册 ,