使用PostgreSQL运行XXL-JOB项目详解
写在前面
作为一个技术小白,首次写博客,排版啥的可能不尽如人意,希望各位看官多多包涵;
由于工作中需要使用xxl-job,使用的是PostgreSQL数据库,特意记录一下踩坑日记。
操作简述
- 首先去项目地址,获取代码:项目地址
- 项目需要提前创建八张表,Mysql数据库可以使用项目代码中的文件创建数据表,由于PGsql与Mysql有差异,PostgreSQL的建表语句可以在此链接下载:建表语句 提取码:vtbh
- 运行项目代码,core为项目核心代码不用管,admin相当于后台系统,samples为样例。我们直接运行admin模块即可,运行前,先修改配置文件中数据库相关的配置文件
- 登录后台,地址:http://localhost:8080/xxl-job-admin/toLogin
账户:admin
密码:123456 - 运行测试样例模块,样例有多个版本,可以选择自己使用的版本进行测试,我以SpringBoot项目为例
- 修改样例模块的配置文件 application.properties,修改完成后,启动项目
# web port
server.port=8081
# no web
#spring.main.web-environment=false
# log config
logging.config=classpath:logback.xml
### xxl-job admin address list, such as "http://address" or "http://address01,http://address02" ***后台项目的地址,必填***
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### xxl-job, access token
xxl.job.accessToken=
### xxl-job executor appname
xxl.job.executor.appname=xxl-job-executor-sample
### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
xxl.job.executor.address=
### xxl-job executor server-info
xxl.job.executor.ip=
### **任务的执行的端口号** 可以自己修改
xxl.job.executor.port=9989
### xxl-job executor log-path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
### xxl-job executor log-retention-days
xxl.job.executor.logretentiondays=30
- 样例项目启动后,可以看到日志信息,这里可以看到,任务已经注册到后台系统中了
- 进入后台系统,选择执行器管理,选择对应的执行器,操作中选择编辑,注册方式选择自动注册,随后保存,系统会自动获取样例模块地址及端口号。
- 也可以选择手动录入,填写任务机对应的IP地址以及端口号。
- 后台选择任务管理,选择对应的任务,点击操作——>运行一次,填写任务参数(必填,可随意填写),点击保存。
- 后台调度日志中,可以看到此次任务执行成功。
踩过的坑
Mapper.xml文件中查询语句问题
- Mysql与Postgresql分页查询不一样,导致列表中查询不到数据,需要将所有Mapper.xml文件中的分页语句替换为:LIMIT #{pagesize} OFFSET #{offset}
- XxlJobLogMapper.xml中findFailJobLogIds查询语句,
WHERE !(
(trigger_code in (0, 200) and handle_code = 0)
OR
(handle_code = 200)
)修改为
WHERE
(trigger_code !=0 AND handle_code !=0 )
OR
(trigger_code !=200 AND handle_code !=0 )
OR
(handle_code != 200) - XxlJobRegistryMapper.xml文件中findAll以及findDead查询语句,DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND)修改为((select NOW())-INTERVAL ‘${timeout} S’ )
其它问题
- 任务未自动注册,一个是项目时间与数据库时间有误差;另一个原因是样例的配置文件中,后台地址配置错误。