XXL-JOB使用达梦数据库,无法自动注册机器地址问题解决

相关配置:XXL-JOB2.4.0,达梦数据库V8

XXL-JOB源码是使用MySQL数据库,现在切换使用达梦数据库,存在部分适配问题,其中比较严重的是执行器无法自动注册。只能自己手动录入机器地址,对于集群部署来说非常麻烦,也不灵活,需要在配置文件指定IP端口。

经排查,发现在XXL_JOB_REGISTRY任务注册表中,在应用启动时会新增一条执行器机器地址记录,但是随后很快就会自动删除。

翻看XXL-JOB-ADMIN的源代码,发现新增和删除机器地址的代码在JobRegistryHelper类中,相关SQL在XxlJobRegistryMapper.xml中。SQL方法为findDead(查询过时机器地址),findAll(查询所有机器地址)。

翻看网上其他有关XXL-JOB使用达梦数据库,但是无法发现机器地址的文章,其中有一篇说是因为达梦数据库不支持【 (#{nowTime} - #{timeout} / 24/60/60】这个语法,要改成【timestampadd(SECOND, -#{timeout}, sysdate )】,参考文章:xxl-job 执行器自动注册无机器地址问题(达梦数据库) - 简书

其实并不是语法不支持的问题,根源是出在 /24/60/60 这个表达式上,达梦数据库整数除法等运算默认舍弃小数,所以这个地方计算得不对,导致新增机器地址后就会经常性被删除。解决方法是通过参数配置修改达梦除法运算规则。

查询达梦数据库配置,默认值为0,需要修改为1。具体可以参考这篇文章:达梦数据库整数除法等运算默认舍弃小数 | 达梦技术社区

 select para_name,para_value from v$dm_ini where para_name='CALC_AS_DECIMAL';
 sp_set_para_value(2,'CALC_AS_DECIMAL',1);

修改参数完成后需要重启数据库,随后重启XXL注册中心和执行器的应用。

再次登录XXL-JOB控制台发现机器已经可以自动注册了。

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值