[xuxueli/xxl-job]由于执行器执行了错误的参数导致一直回调调度中心

2024-04-24 910 views
9

通过自定义参数设置了一个错误的json,导致执行器执行时抛出异常。并且一直在回调这错误的message给调度中心。

version 2.1.2 我期望它仅回调一次。 无限制的回调

回答

2

目前定位到确实是执行器一直在向调度器发送callback请求,具体原因排查中

6

问题跟踪到了,是重试机制导致的。重试这块是否做下优化?有一些没必要的重试(如我遇到的执行器参数解析异常,重试就进入了一个死循环)是否可以忽略? @xuxueli

4
    /**
     * do callback, will retry if error
     * @param callbackParamList
     */
    private void doCallback(List<HandleCallbackParam> callbackParamList){
        boolean callbackRet = false;
        // callback, will retry if error
        for (AdminBiz adminBiz: XxlJobExecutor.getAdminBizList()) {
            try {
                ReturnT<String> callbackResult = adminBiz.callback(callbackParamList);
                if (callbackResult!=null && ReturnT.SUCCESS_CODE == callbackResult.getCode()) {
                    callbackLog(callbackParamList, "<br>----------- xxl-job job callback finish.");
                    callbackRet = true;
                    break;
                } else {
                    callbackLog(callbackParamList, "<br>----------- xxl-job job callback fail, callbackResult:" + callbackResult);
                }
            } catch (Exception e) {
                callbackLog(callbackParamList, "<br>----------- xxl-job job callback error, errorMsg:" + e.getMessage());
            }
        }
        // 我打算把这块逻辑放到异常里面处理
        if (!callbackRet) {
            appendFailCallbackFile(callbackParamList);
        }
    }

改为对异常走重试是否更友好一点?是否可以增加重试的次数配置? @xuxueli