| 本帖最后由 李维 于 2025-6-19 11:45 编辑 
 华为云测试区
 租户:icd
 问题描述:
 全异步服务A中业务逻辑调用其他全异步服务B(稳态)。
 1.稳态全异步服务B能正常回调返回数据
 2.服务A请求回复正常,但是回调服务没有执行。
 请协助排查,谢谢。
 
 服务接口定义:
 
 
 服务实现:复制代码    /**
     *  稳态API异步请求
     *
     * @param headers 请求头信息
     * @param messageBody 业务信息
     * @return java.util.Map<java.lang.String, java.lang.Object>
     * @author liwei1
     * @date 2024/11/15 17:33
     */
    @EAIService(id="spa.icd.async.stable.api.process")
//    @Api(name = {"icd.erp.out.wo.release"})
    public DWEAIResult processAsyncStableApi(Map<String, Object> headers, Map<String, Object> messageBody) throws Exception;
    /**
     * 稳态API异步请求,稳态API请求的callback
     *
     * @param headers
     * @param messageBody
     * @Author: xieJinLong
     * @DateTime: 2021-9-26 16:29
     * @Return com.digiwin.app.service.DWEAIResult
     */
    @EAICallback(id = "spa.icd.async.stable.api.process.callBack")
    DWEAIResult processAsyncStableApieCallBack(Map<String, Object> headers, String messageBody) throws Exception;
 复制代码    /**
     * 稳态API请求
     * spa.icd.async.stable.api.process
     *
     * @param headers     请求头信息
     * @param messageBody 业务信息
     * @return java.util.Map<java.lang.String, java.lang.Object>
     * @author liwei1
     * @date 2024/11/15 17:33
     */
    @Override
    public DWEAIResult processAsyncStableApi(Map<String, Object> headers, Map<String, Object> messageBody) throws Exception {
        Map bodyParameter = AppCommonUtils.getBodyParameter(messageBody);
        //接口名称
        String serviceName = bodyParameter.containsKey("service_name") ? bodyParameter.get("service_name").toString() : Strings.EMPTY;
        //业务信息
        Map<String, Object> requestInfo = (Map<String, Object>) bodyParameter.get("business_info");
        //调用异步稳态api
        DWEAIFasyncChainResult dweaiFasyncChainResult = new DWEAIFasyncChainResult("0", "", "", new HashMap<>(),
                () -> {
                    try {
                        //调用稳态接口
                        AppCommonUtils.invokeFasyncStableApi(headers, serviceName, requestInfo, "spa.icd.async.stable.api.process.callBack", true);
                    } catch (Exception e) {
                        throw new RuntimeException(e);
                    }
                },
                (callbackHeaders, callbackMessageBody) -> {
                });
        dweaiFasyncChainResult.setChainParameter("is_exception", true);
        return dweaiFasyncChainResult;
    }
    /**
     * 异步请求稳态API回调处理
     * spa.icd.async.stable.api.process.callBack
     *
     * @param headers     响应头信息
     * @param messageBody 业务信息
     * @return java.util.Map<java.lang.String, java.lang.Object>
     * @author liwei1
     * @date 2024/11/15 17:33
     */
    @Override
    public DWEAIResult processAsyncStableApieCallBack(Map<String, Object> headers, String messageBody) throws Exception {
        StdData stdData = AppCommonUtils.toStdData(messageBody);
        DigiSrvcode digiSrvcode = "0".equals(stdData.getCode()) ? DigiSrvcode.success : DigiSrvcode.failure;
        //region
        Map<String, Object> response = stdData.getParameter();
        //是否存在稳态请求异常
        Boolean isException = false;
        //异常处理信息
        String description = Strings.EMPTY;
        if ("0".equals(stdData.getCode())) {
            response = stdData.getParameter();
        } else {
            isException = true;
            description = stdData.getDescription();
        }
        Map<String, Object> parameter = new HashMap<>();
        parameter.put("is_exception", isException);
        //异常信息
        parameter.put("description", description);
        //业务信息
        parameter.put("business_info", response);
        //endregion
        // DWEAIChainTotalResult为服务给去中心化 ESP的回应
        DWEAIChainTotalResult chainTotalResult = new DWEAIChainTotalResult(stdData.getCode(), "111", "callback chainTotalResult", parameter);
        chainTotalResult.setDigiSrvcode(digiSrvcode);
        // 返回DWEAIFasyncChainEndResult结束调用链并继续调用链并返回给全异步服务spa.icd.async.stable.api.process「接收回应」
        DWEAIFasyncChainEndResult dweaiFasyncChainEndResult = new DWEAIFasyncChainEndResult("0", "", "callback", new HashMap<>(), (callbackHeaders, callbackMessageBody) -> {
            // 处理中心化 / EAI / ESP返回的「接收回应」信息
            System.out.println(callbackMessageBody.toString());
        }, chainTotalResult);
        dweaiFasyncChainEndResult.setDigiSrvcode(DigiSrvcode.success);
        return dweaiFasyncChainEndResult;
    }
 
 
 |