暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

调用xxl-job传参遇到的坑

IT那活儿 2022-04-28
10163
点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!!




背景介绍


首先介绍一下xxl-job,官网上作者是这么说的:
xxl-job是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
确实如作者所说,易学且好用。
刚好现在有一个需求就使用上了xxl-job执行任务。




问题描述


在通过java应用调用xxl-job调度中心调用执行器时发现了一个很容易忽略的问题,那就是调用调度中心接口时传的参数过长,xxl-job自带的日志表将不能记录下执行器地址、执行器入参以及调度成功失败信息,但是执行器又将任务执行成功/失败了。
java调用xxl-job调度中心传参过长。
调度中心日志展示问题。




问题排查


一开始直觉告诉我这样的肯定是有问题的,但是百度了一圈后,发现网上都没有出现过我遇到的问题。于是我又去找执行器的日志,但是日志都很正常。这样这个问题就僵住了,一时间没有解决办法。
于是我就在决定在本地测试,将调度中心和执行器改都改为本地运行。
一直debug,最终在控制台找到了原因。
就在传参上出问题了,就是xxl-job日志表中的执行器入参字段长度有限制,最后去服务器上一看,确实是这个问题。
执行器入参过长保存日志时报错。
xxl-job日志表执行器入参字段长度。




解决方案


其实这样的小问题解决方案还是挺多的,最简单的就是将执行器入参的长度减短。满足表中的要求就行了。
如果就有入参过长的硬性需求时,那就只能将表中的字段长度加长。我这里基于尊重原创就将参数简化了。
调用xxl-job接口入参减短。
调度中心日志展示正常。
执行器地址等信息正常记录。
xxl-job调用执行器入参记录。
上述的的问题在只有一个执行器的情况下虽然任务能执行成功,影响不大。但是在配置多个执行器的情况下就很难定位问题,找不到任务在哪个执行器执行的。
所以不能因为不影响功能使用而轻易放过任何一个小小的bug,那样的话总有一天它会成为一个大窟窿,到时候就不好填补了。



本文作者:段席超

本文来源:IT那活儿(上海新炬王翦团队)

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论