使用PostgreSQL运行XXL-JOB项目详解

使用PostgreSQL运行XXL-JOB项目详解

    • 写在前面
    • 操作简述
    • 踩过的坑
      • Mapper.xml文件中查询语句问题
      • 其它问题

写在前面

作为一个技术小白,首次写博客,排版啥的可能不尽如人意,希望各位看官多多包涵;
由于工作中需要使用xxl-job,使用的是PostgreSQL数据库,特意记录一下踩坑日记。

操作简述

  1. 首先去项目地址,获取代码:项目地址
  2. 项目需要提前创建八张表,Mysql数据库可以使用项目代码中的文件创建数据表,由于PGsql与Mysql有差异,PostgreSQL的建表语句可以在此链接下载:建表语句 提取码:vtbh
  3. 运行项目代码,core为项目核心代码不用管,admin相当于后台系统,samples为样例。我们直接运行admin模块即可,运行前,先修改配置文件中数据库相关的配置文件使用PostgreSQL运行XXL-JOB项目详解_第1张图片使用PostgreSQL运行XXL-JOB项目详解_第2张图片
  4. 登录后台,地址:http://localhost:8080/xxl-job-admin/toLogin
    账户:admin
    密码:123456
  5. 运行测试样例模块,样例有多个版本,可以选择自己使用的版本进行测试,我以SpringBoot项目为例使用PostgreSQL运行XXL-JOB项目详解_第3张图片
  6. 修改样例模块的配置文件 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
  1. 样例项目启动后,可以看到日志信息,这里可以看到,任务已经注册到后台系统中了
    使用PostgreSQL运行XXL-JOB项目详解_第4张图片
  2. 进入后台系统,选择执行器管理,选择对应的执行器,操作中选择编辑,注册方式选择自动注册,随后保存,系统会自动获取样例模块地址及端口号。使用PostgreSQL运行XXL-JOB项目详解_第5张图片
  3. 也可以选择手动录入,填写任务机对应的IP地址以及端口号。
  4. 后台选择任务管理,选择对应的任务,点击操作——>运行一次,填写任务参数(必填,可随意填写),点击保存。使用PostgreSQL运行XXL-JOB项目详解_第6张图片
  5. 后台调度日志中,可以看到此次任务执行成功。使用PostgreSQL运行XXL-JOB项目详解_第7张图片

踩过的坑

Mapper.xml文件中查询语句问题

  1. Mysql与Postgresql分页查询不一样,导致列表中查询不到数据,需要将所有Mapper.xml文件中的分页语句替换为:LIMIT #{pagesize} OFFSET #{offset}
  2. 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)
  3. XxlJobRegistryMapper.xml文件中findAll以及findDead查询语句,DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND)修改为((select NOW())-INTERVAL ‘${timeout} S’ )

其它问题

  1. 任务未自动注册,一个是项目时间与数据库时间有误差;另一个原因是样例的配置文件中,后台地址配置错误。

你可能感兴趣的:(java)