李维 发表于 2025-6-19 11:45:32

高代码开发:全异步服务A中业务逻辑调用其他全异步服务B(稳态),服务A回调没有执行

本帖最后由 李维 于 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;
    }


姜文盛 发表于 2025-6-19 15:16:11

收到问题,内部确认中

姜文盛 发表于 2025-6-19 19:20:43

1. 确认平台云呼叫地端异步服务是支持的
2. 现况没callback问题,需要确认地端服务是否有正常返回。 (需要加log确认下),
等待確認後往下排查。

姜文盛 发表于 2025-6-23 12:59:46


問題定位在地中台沒正常返回給云中台,需請地中台人員確認
單子轉禪道單168002追踨
页: [1]
查看完整版本: 高代码开发:全异步服务A中业务逻辑调用其他全异步服务B(稳态),服务A回调没有执行