Skip to content

定时任务

简介

pangea-job-admin 为各系统提供统一的定时任务调度平台,主要包括pangea-job-admin(任务调度平台)和执行器(指定义定时任务相关信息的模块)两部分,支持数据库类型为oracle

调度平台配置

1.申请数据库资源

首先需要通过信云申请数据库资源(如果项目使用方已有可用的oracle数据库,则不需要再申请数据库资源),然后将pangea-job所需的表结构导入到数据库。点击下载SQL文件

SQL中预创建了调度平台的初始用户名和密码,可以在调度平台的用户管理页面修改密码

初始用户名:admin 初始密码:请联系项目相关人员

2.修改数据库配置信息

登录信云,在应用管理下点击服务,在服务列表找到pangea-job-admin对应的服务(如下图),点击「服务名称」:

页面设计器

找到服务的环境变量,按照下图的顺序根据项目实际情况配置服务的数据库信息,修改完毕之后点击应用修改,服务自动重启,重启成功访问该服务看是否能够正常使用,需要配置的变量有:

  • ORACLE_HOST(数据库ip)
  • ORACLE_PID(数据库服务名)
  • ORACLE_NAME(数据库用户名)
  • ORACLE_PASSWORD(数据库密码)

页面设计器

3.执行器配置

3.1 在需要定义定时任务的模块中引入如下依赖:

xml
<!--执行器公共配置依赖-->
<dependency>
    <groupId>com.hisense.pangea</groupId>
    <artifactId>pangea-common-executor</artifactId>
</dependency>
<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy</artifactId>
</dependency>

3.2 在项目的application.yml文件中添加调度平台的相关配置信息,此配置文件的数据可以通过pangea-common-executor公共配置模块进行读取,从而避免了每一个项目中写一个配置类:

yaml
xxl:
  job:
    admin:
      #此处为调度平台的访问地址
      addresses: http://127.0.0.1:8011
    executor:
      #此处为执行器名称,在调度平台新增执行器时AppName的值就是这个字段
      appname: pangea-executor
      ip:
      #此端口号为机器地址中的端口号 可以由调度平台自动获取或者手动输入
      port: 8013  
      #logback的日志存放路径
      logpath: /data/applogs/xxl-job/jobhandler    
      logretentiondays: 30
    accessToken:

3.3 书写定时任务类:书写定时任务可以参考下面的文件,根据项目需求选择相应的定时任务种类进行书写。

点击下载SampleXxlJob.java

注意事项

  1. 需要在类上加@Component注解,使类可以被扫描到;
  2. 定义定时任务的方法需要使用 @XxlJob("demo1012Test")注解标示,括号中的名称为调度平台配置的定时任务JobHandler的值;
  3. 在配置定时任务模块的启动类上加上扫描包路径,防止pangea-common-executor包内的bean无法被扫描到。

页面设计器

java
@SpringBootApplication(scanBasePackages = {"com.xxl.job.executor",
        "com.hisense.pangea.executor.config"})
@EnableDiscoveryClient
public class XxlJobExecutorApplication {

    public static void main(String[] args) {
        SpringApplication.run(XxlJobExecutorApplication.class, args);
    }

}
  1. 在部署执行器所在模块的流水线时 需要创建配置文件中的日志路径,并且授权给当前用户 (登录信云平台----流水线 ---流水线定义—docker镜像的dockerfile中添加如下命令) 页面设计器
java
USER 0
RUN mkdir -p /data/applogs/xxl-job/jobhandler && chmod 777 /data/applogs/xxl-job/jobhandler
USER jboss

常见问题

执行器所在模块无法获取pangea-xxl-job xxl-rpc-core pangea-common-executor groovy依赖

  • 确保项目中pangea-parent的版本为2.0.1.7及更高 页面设计器
  • 项目根pom.xmlpangea.versionpangea-parent的版本一致
  • 执行器所在模块的pom.xml文件引入了相应依赖

执行器所在模块启动成功但是无法自动获取机器地址页面设计器

  • 确保执行器所在模块application.yml文件中配置了xxl-job-executor相关的信息(图中配置上文中有) 页面设计器

  • pangea-common-executor.jar PangeaJobConfiguration类中添加断点,debugger方式启动该模块,看断点是否能够拦截:

    • 不能拦截请参考「书写定时任务类」注意事项的第三项)
    • 能够拦截查看xxlJobExecutor获取的配置信息是否正确。(下图为jar包中代码) 页面设计器
  • 查看调度平台中配置的AppName是否与application.yml中的appname一致,项目中需要配置多个执行器时,请保证appname与端口的唯一可用。 页面设计器

界面操作

js
export const Highlight = ({children, color}) => (
  <span
    style={{
      backgroundColor: color,
      borderRadius: '2px',
      color: '#fff',
      padding: '0.2rem',
    }}>
    {children}
  </span>
);
  1. 登录系统,进入应用-任务调度,点击任务调度菜单

    登录pangea-job-admin平台需要使用用户名admin 密码联系项目相关人员(与xxl-job官网一致) 。

    页面设计器

  2. 配置执行器,点击上图的执行器管理,即可看到如下图所示页面,展示了已有的执行器数据信息,需要注意的是删除执行器时必须保证该执行器没有配置定时任务,否则提示无法删除,需要先在任务管理处删除掉与该执行器相关的定时任务之后才能删除执行器

    页面设计器

    • 新增执行器——点击新增执行器,执行器配置参考(文档地址)点击保存即可看到自己配置的执行器。此处自动注册系统会自动获取注册到pangea-job-admin上的执行器服务地址端口号,手动录入需要根据实际情况进行输入。 点击保存之后在执行器列表查看机器地址是否与自己的执行器服务配置一致,如果不一致根据文档地址进行问题定位解决

    页面设计器

  3. 任务管理, 点击任务管理进入该模块,如下图。 页面设计器

    • 新增定时任务——点击新增按钮,根据需要填写弹窗内容。 查看参考文档

    页面设计器

操作按钮详解

  • 执行一次:通过点击该按钮,手动触发一次任务,定时任务调试或者需要手动执行一次的时候使用
  • 查询日志:点击该按钮,跳转到该任务的调度任务页面,查看定时任务的执行日志记录
  • 注册节点:查看该定时任务注册的执行器ip:端口号信息
  • 下次执行时间:查看定时任务在当前时间点之后的执行计划,可以验证定时任务的Cron表达式是否正确
  • 启动:开启定时任务并按照cron表达式周期执行
  • 编辑:修改定时任务内容
  • 删除:删除该定时任务
  1. 调度日志 点击调度日志进入日志列表,查询需要查看的定时任务执行结果

    页面设计器