# HOS-JOB 分布式任务调度平台

# 概述

  • HOS-JOB是HOS基础平台基于XXL-JOB开源组件二次开发的分布式任务调度平台。
  • XXL-JOB官网:https://www.xuxueli.com/xxl-job/
  • 请到官网仔细阅读文档,基础使用、基本概念将不在本章节讲解。本章节重点讲解如何在hos-mediway平台接入并使用
  • HOS-JOB服务由两部分组成:任务调度中心执行器任务调度中心为单独启动的SpringBoot服务,包括完整的前端与后端,统一管理任务调度平台上调度任务, 负责触发调度执行,并且提供任务管理平台。 执行器为定时任务具体执行服务,与其他中间件集成方式相同,集成到hos-runner中,随工程启动

# 使用示例

# 工程目录

  • 打开工程,找到hos-framework下的目录

xxl-job-01.png

  • 其中 framework-job-admin 是HOS-JOB中间件后台,集成进了hos-mediway中

# 开启HOS-JOB任务调度中心

# 1、新建数据库并执行对应sql文件

xxl-job-02.png

数据库文件位置:

xxl-job-03.png

# 2、修改配置文件

xxl-job-05.png

配置文件位置为:

xxl-job-04.png

# 3、启动 framework-job-admin

xxl-job-06.png

# 4、访问 : http://localhost:8080/xxl-job-admin

xxl-job-07.png

默认账号密码为:admin 123456

登录成功后界面如下

xxl-job-08.png

# 接入 HOS-JOB客户端(执行器)

# 引入依赖

<dependency>
    <groupId>com.mediway.hos</groupId>
    <artifactId>hos-framework-job-starter</artifactId>
</dependency>

# 配置项说明

执行器的配置项经本地化改造,与其他组件采用相同风格,使用framework.job配置项。 其具体项目以及描述如下:

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

# 启动项目

启动主程序hos-runner

xxl-job-10.png

xxl-job-09.png

# 打开调度中心的 执行器管理 ,可以看到我们的执行器已经注册成功

xxl-job-11.png

注意:hos-Job的自动注册为自动注册在线机器,需要先在执行器中存在该执行器(注册方式为`自动注册`)才可注册成功

除此之外,如果我们有多个执行器,启动后都可以进行手动注册的方式注册到调度中心

xxl-job-12.png

# 定时任务创建

前提:请确认“调度中心”和“执行器”项目已经成功部署并启动;

# 步骤一:任务开发

定时任务示例demoExampleJobHandler所在位置:

xxl-job-op-01.png

代码:

xxl-job-op-02.png

# 步骤二:新建任务

  • 切换到任务管理

    xxl-job-op-03.png

  • 点击新建创建新的定时任务

xxl-job-op-04.png

xxl-job-op-05.png

详细任务配置说明请参考:XXL-JOB官方文档-三、任务详解 (opens new window)

# 步骤三:手动执行一次任务

xxl-job-op-06.png

xxl-job-op-07.png

xxl-job-op-08.png

# 步骤四:查看日志

  • 切换到调度日志

xxl-job-op-09.png

  • 任务执行完成后的日志

xxl-job-op-10.png

  • 点击执行日志可查看日志内容

xxl-job-op-11.png

xxl-job-op-12.png

  • 再次调用,并打上断点,可以看到正确进入的断点并且获取到到任务参数相匹配,说明任务执行成 功

xxl-job-op-13.png

xxl-job-op-14.png

# 后记

  • demo已经接入完毕,后续的操作就需要大家认真阅读官方文档,并且动手操作试验了!~

# 常见问题

  • 执行器所在的工程已经正常启动,但未注册成功

查看执行器列表中是否有配置项framework.job.executor.appname对应的执行器存在,对应如图位置

xxl-job-problem-01.png

若不存在对应执行器,需要手动新建执行器

xxl-job-problem-02.png