Open slowlog opened 6 years ago
你好,任务回调失败的原因可能有以下几个方面引起: 1、调度中心未启动:无法提供回调API服务; 2、网络问题:调度中心与执行器跨机器部署时,网络问题导致执行器无法ping通调度中心; 3、回调地址配置错误:导致回调请求发送失败; 可以逐个确认排查。
@xuxueli 已解决, 确实是回调地址配置问题, 谢谢
遇到同样问题 希望给后来的童鞋一些提示 现在代码版本中执行器默认回调地址是 http://192.168.xxx.xxx:8080/xxl-job-admin 而默认的服务是没有 xxl-job-admin这个名称的
@timewind Thanks~ 找了半天,结果是这一个原因哈。
你好,任务回调失败的原因可能有以下几个方面引起: 1、调度中心未启动:无法提供回调API服务; 2、网络问题:调度中心与执行器跨机器部署时,网络问题导致执行器无法ping通调度中心; 3、回调地址配置错误:导致回调请求发送失败;
默认回调地址是 http://192.168.xxx.xxx:8080/xxl-job-admin
而默认的服务是没有 xxl-job-admin这个名称的。
触发调度: address:http://127.0.0.1:8080 code:500 msg:java.lang.RuntimeException: Client-error:unknown code for readObject at 0x3c (<)
您好,在使用xxljob过程呢个中任务回调失败,日志报空指针异常,但是本地控制台不报错
,
防火墙全部都已关闭,同事电脑调用没问题,貌似只有我的出现了这个情况,无法找到具体原因,希望回复一下提供一下思路,配置应该是没任何问题的,调度室idea无任何报错
回调的执行,好像有子任务ID 才可以进行,对于 一个正常的任务如果需要回调,又该如何回调?
版本v2.0.2
源代码
private ReturnT<String> callback(HandleCallbackParam handleCallbackParam) {
// valid log item
XxlJobLog log = xxlJobLogDao.load(handleCallbackParam.getLogId());
if (log == null) {
return new ReturnT<String>(ReturnT.FAIL_CODE, "log item not found.");
}
if (log.getHandleCode() > 0) {
return new ReturnT<String>(ReturnT.FAIL_CODE, "log repeate callback."); // avoid repeat callback, trigger child job etc
}
// trigger success, to trigger child job
String callbackMsg = null;
if (IJobHandler.SUCCESS.getCode() == handleCallbackParam.getExecuteResult().getCode()) {
XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(log.getJobId());
if (xxlJobInfo!=null && xxlJobInfo.getChildJobId()!=null && xxlJobInfo.getChildJobId().trim().length()>0) {
callbackMsg = "<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>"+ I18nUtil.getString("jobconf_trigger_child_run") +"<<<<<<<<<<< </span><br>";
String[] childJobIds = xxlJobInfo.getChildJobId().split(",");
for (int i = 0; i < childJobIds.length; i++) {
int childJobId = (childJobIds[i]!=null && childJobIds[i].trim().length()>0 && isNumeric(childJobIds[i]))?Integer.valueOf(childJobIds[i]):-1;
if (childJobId > 0) {
JobTriggerPoolHelper.trigger(childJobId, TriggerTypeEnum.PARENT, -1, null, null);
ReturnT<String> triggerChildResult = ReturnT.SUCCESS;
// add msg
callbackMsg += MessageFormat.format(I18nUtil.getString("jobconf_callback_child_msg1"),
(i+1),
childJobIds.length,
childJobIds[i],
(triggerChildResult.getCode()==ReturnT.SUCCESS_CODE?I18nUtil.getString("system_success"):I18nUtil.getString("system_fail")),
triggerChildResult.getMsg());
} else {
callbackMsg += MessageFormat.format(I18nUtil.getString("jobconf_callback_child_msg2"),
(i+1),
childJobIds.length,
childJobIds[i]);
}
}
}
}
// handle msg
StringBuffer handleMsg = new StringBuffer();
if (log.getHandleMsg()!=null) {
handleMsg.append(log.getHandleMsg()).append("<br>");
}
if (handleCallbackParam.getExecuteResult().getMsg() != null) {
handleMsg.append(handleCallbackParam.getExecuteResult().getMsg());
}
if (callbackMsg != null) {
handleMsg.append(callbackMsg);
}
// success, save log
log.setHandleTime(new Date());
log.setHandleCode(handleCallbackParam.getExecuteResult().getCode());
log.setHandleMsg(handleMsg.toString());
xxlJobLogDao.updateHandleInfo(log);
return ReturnT.SUCCESS;
}
请问能否自定义回调方法?
你好 我这边启动的时候执行器就失败了 我的配置是 `### 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册; xxl.job.admin.addresses=http://127.0.0.1:8080
xxl.job.accessToken=
xxl.job.executor.appname=xxl-job-executor
xxl.job.executor.address=
xxl.job.executor.ip= 127.0.0.1
xxl.job.executor.port=9999
xxl.job.executor.logpath=./logs/xxl-job/jobhandler
xxl.job.executor.logretentiondays=30 这样的有啥问题吗 哪里配置的不对 启动就报错
2021-01-09 09:30:31.520 [xxl-job, executor ExecutorRegistryThread] INFO com.xxl.job.core.thread.ExecutorRegistryThread->>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='xxl-job-executor', registryValue='http://127.0.0.1:9999/'}, registryResult:ReturnT [code=4015, msg=鏈櫥褰?, content=null]
`
执行器正常,就是回调给调度中心的时候抛出异常,导致任务一直无法被终止, 请问这是什么原因导致的?我是在docker容器里面跑的
如下图所示