高代码开发:全异步服务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;
}
收到问题,内部确认中 1. 确认平台云呼叫地端异步服务是支持的
2. 现况没callback问题,需要确认地端服务是否有正常返回。 (需要加log确认下),
等待確認後往下排查。
問題定位在地中台沒正常返回給云中台,需請地中台人員確認
單子轉禪道單168002追踨
页:
[1]