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