为了将公司原生 Spring 定时升级,使用到了 xxl-job, 当时写了一下关于 xxl 的使用方法和配置,在后面的使用中,逐渐发现了一些问题需要注意,所谓前人栽树🌳,后人乘凉🧊,发光发热🌞,做大做强💪,所以把之前 xxl 的内容做个补充,防止踩坑。
- 对于程序的异常,如果 try-catch 进行了捕捉,那么在前台 admin 控制中心中,日志是无法感知到的,框架会认为任务执行完好,显示运行成功 (其实在后台代码控制台上已经报错了),所以需要在 catch 当中对异常进行抛出,让框架感知到异常。
- 关于执行器可以理解为当前项目程序当中还有一个程序用来执行调度任务,所以 xxl.job.executor.port 和 server.port 端口不能冲突。
- 关于执行器管理->新增页面下,同 AppName 的机器属于同一集群,当选择自动注册时,会显示该 AppName下正在运行的机器数和IP。而选择手动录入,无论注册机器是否正在运行,或给定一个假 IP, 都会显示在线,它不会判断机器是否真正注册进来。如下如图所示👇:
Online 机器显示为3,但是点击查看以后可以发现我给的IP都是随便给的,并没有注册。
- properties 配置文件中的 xxl.job.executor.address,xxl.job.executor.ip 即使为空也需要将配置加上,不然执行器启动报错。
- XxlJobHelper.getJobParam() 用于接收前台传入的参数,参数类型为字符,即使传入带有分号"0",在后台接收也是带有分号"0"。
- XxlJobHelper.log() 用于将内容打印到前台日志当中,后台控制台看不到。
- 当存在多个不同 IP 下的 admin 控制中心时,如果连接的是同一个数据库,则数据共享 (包括显示的 Online机器),但不属于 xxl.job.admin.addresses 配置地址中的 admin,调用任务是无效的。
我是 Haoo,一个乐观的码农,撰写有趣的文章。
如果这篇文章帮助到你,请收藏⭐点赞👍加关注👀,跟踪不迷路(🌻◡‿◡)