本文旨在为您介绍在使用任务调度实例版(XXL-JOB)时,遇到的接入相关问题,通过详细解析这些问题,您将能够更好地理解和解决在接入过程中可能遇到的问题,确保任务调度系统的稳定运行。
域名解析错误,报错java.net.UnknownHostException
XXL-JOB的域名使用的是privatezone,需要使用100.100.2.136和100.100.2.138,如果您修改过路由或者DNS配置,需要将这两个IP的路由规则删除后,以确保域名能够自动解析到。
您可以使用Dig域名的方式来定位,如下图所示,Dig域名返回的DNS服务器地址是114.114.114.114,说明存在问题。

使用CEN打通网络,另一个VPC无法解析域名
提工单联系研发同学,将privatezone映射到其他VPC中。
使用运营商专线打通网络,在自建IDC或者办公网无法解析域名
详见转发管理。
从2.0.x版本升级到新的SDK版本,同一个IP会出现两个Executor
如果从xxl-job-core的2.0.x版本或者更低的版本升级到新的SDK,同一个IP会出现两个Executor。如下图:

原因是新的SDK中XxljobExecutor的初始化逻辑发生变化,以下代码需要去除Bean中的initMethod和destroyMethod,否则XxlJobSpringExecutor将会调用两次start。
@Bean(initMethod = "start", destroyMethod = "destroy")
public XxlJobSpringExecutor xxlJobExecutor() {
logger.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppName(appName);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}如何处理nodejs版本的SDK接入存在无法接受应答的问题
步骤一:
import type { Request, Response, NextFunction } from 'express'
const JSONbig = require('json-bigint');
步骤二:
/**
* Safe JSON parsing middleware that preserves large integers as strings
* This prevents precision loss for large logId values that exceed Number.MAX_SAFE_INTEGER
*/
const safeJsonMiddleware = function () {
return (req: Request, res: Response, next: NextFunction) => {
if (req.is('application/json')) {
let body = ''
req.setEncoding('utf8')
req.on('data', (chunk) => {
body += chunk
})
req.on('end', () => {
try {
// 使用 JSONbig.parse() 而不是 JSON.parse()
// 'storeAsString: true' 会将大数解析为字符串
// 如果想解析为 BigInt,可以使用 'useNativeBigInt: true'
req.body = JSONbig({ storeAsString: true }).parse(body);
next();
} catch (e) {
// 如果解析失败,返回错误
res.status(400).send('Invalid JSON');
}
})
req.on('error', next)
} else {
next()
}
}
}
步骤三:
app.use(safeJsonMiddleware())该文章对您有帮助吗?