XxlJob使用说明.md
1. 执行:tables_xxl_job.sql
2. 启动xxl_job服务
文件路径:jeecg-server-cloud/jeecg-visual/jeecg-cloud-xxljob/Dockerfile
# 打包xxl_job工程的Dockerfile
docker build -t jeecg:xxl_job .
# 启动命令参考
docker run -di --name=jeecg-xxljob \
-p 9080:9080 \
-e PORT=9080 \
-e PROFILE=pg \
-e DATABASE_HOST=172.17.0.1 \
-e DATABASE_PORT=5432 \
-e DATABASE_NAME=xxl_job \
-e DATABASE_USER=postgres \
-e DATABASE_PWD=123456 \
jeecg:xxl_job
# 默认用户名:admin 密码:123456
3. 微服务模块集成使用
3.1 引入依赖
<!-- 引入定时任务依赖 -->
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-starter-job</artifactId>
</dependency>
3.2 编写定时任务handler
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class DemoJobHandler {
@XxlJob(value = "demoJob")
public ReturnT<String> demoJobHandler(String params) {
log.info("我是定时任务,我执行了...............................");
return ReturnT.SUCCESS;
}
}
3.3 修改nacos中jeecg-dev.yaml配置,开启 xxljob
jeecg:
xxljob:
enabled: true
adminAddresses: http://jeecg-boot-xxljob:9080/xxl-job-admin
appname: ${spring.application.name}
accessToken: ''
logPath: logs/jeecg/job/jobhandler/
logRetentionDays: 30
3.4 访问xxl管理后台
http://jeecg-boot-xxljob:9080/xxl-job-admin
默认登录账号:admin/123456
创建定时任务:
- 新增执行器(对应微服务名,需要手工创建)

- 查看注册节点,填写微服务名后,过一会儿后就会自动出现

- 新增定时任务

问题记录:执行器管理中,在各个配置正确的情况下,自动注册的机器地址一直没值
查看过源码,发现com.xxl.job.admin.core.thread.JobRegistryMonitorHelper类中,会定时扫描判断超时注册机器(默认90s),
这时候需要去确认数据库服务器的时钟了,如果和应用服务器的时间差距大于90s,将一直标记为超时节点,从而被自动剔除。
因此解决方式是同步应用服务器和数据库服务器的系统时间:
# 手动修改时间
date -s 完整日期时间(YYYY-MM-DD hh:mm[:ss])
# 将时间写入bios避免重启失效
hwclock -w
# 如果有网络 https://www.cnblogs.com/suiyueshentou/p/7798340.html
#安装ntp服务命令:
apt-get install ntp 或者 yum install ntp
ntpdate 210.72.145.44
# 修改时区
date -R
tzselect
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime