定时任务
简介
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 书写定时任务类:书写定时任务可以参考下面的文件,根据项目需求选择相应的定时任务种类进行书写。
注意事项
- 需要在类上加@Component注解,使类可以被扫描到;
- 定义定时任务的方法需要使用 @XxlJob("demo1012Test")注解标示,括号中的名称为调度平台配置的定时任务JobHandler的值;
- 在配置定时任务模块的启动类上加上扫描包路径,防止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);
}
}
- 在部署执行器所在模块的流水线时 需要创建配置文件中的日志路径,并且授权给当前用户 (登录信云平台----流水线 ---流水线定义—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.xml
中pangea.version
与pangea-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>
);
登录系统,进入应用-任务调度,点击任务调度菜单
登录pangea-job-admin平台需要使用用户名admin 密码联系项目相关人员(与xxl-job官网一致) 。
配置执行器,点击上图的执行器管理,即可看到如下图所示页面,展示了已有的执行器数据信息,需要注意的是删除执行器时必须保证该执行器没有配置定时任务,否则提示无法删除,需要先在任务管理处删除掉与该执行器相关的定时任务之后才能删除执行器
任务管理, 点击任务管理进入该模块,如下图。
- 新增定时任务——点击新增按钮,根据需要填写弹窗内容。 查看参考文档
操作按钮详解
- 执行一次:通过点击该按钮,手动触发一次任务,定时任务调试或者需要手动执行一次的时候使用
- 查询日志:点击该按钮,跳转到该任务的调度任务页面,查看定时任务的执行日志记录
- 注册节点:查看该定时任务注册的执行器ip:端口号信息
- 下次执行时间:查看定时任务在当前时间点之后的执行计划,可以验证定时任务的Cron表达式是否正确
- 启动:开启定时任务并按照cron表达式周期执行
- 编辑:修改定时任务内容
- 删除:删除该定时任务
调度日志 点击调度日志进入日志列表,查询需要查看的定时任务执行结果