解决多线程并发
This commit is contained in:
@@ -133,18 +133,13 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
|||||||
|
|
||||||
//根据aiAnalysisRequestId更新请求日志表的difyRequest字段
|
//根据aiAnalysisRequestId更新请求日志表的difyRequest字段
|
||||||
syncUpdateDiFyRequest(difyCommunityTargetDTO, aiAnalysisRequestId);
|
syncUpdateDiFyRequest(difyCommunityTargetDTO, aiAnalysisRequestId);
|
||||||
|
|
||||||
DiFyReq diFyReq = new DiFyReq();
|
|
||||||
diFyReq.setUser(user);
|
|
||||||
diFyReq.setInputs(difyCommunityTargetDTO);
|
|
||||||
//调用DiFy工作流,并推送到社区
|
//调用DiFy工作流,并推送到社区
|
||||||
processDify(diFyReq, difyResult, aiAnalysisRequestId);
|
processDify(difyCommunityTargetDTO,user,difyResult, aiAnalysisRequestId);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("舆情自动化异常:{}", e.getMessage());
|
log.error("舆情自动化异常:{}", e.getMessage());
|
||||||
//保存错误日志
|
//保存错误日志
|
||||||
aiAnalysisErrorsMapper.insert(AiAnalysisErrors.builder()
|
aiAnalysisErrorsMapper.insert(AiAnalysisErrors.builder()
|
||||||
.aiAnalysisRequestId(aiAnalysisRequestId)
|
.aiAnalysisRequestId(aiAnalysisRequestId)
|
||||||
.difyResponse(difyResult.toJSONString())
|
|
||||||
.aiAnalysisErrorMessage(e.getMessage())
|
.aiAnalysisErrorMessage(e.getMessage())
|
||||||
.aiAnalysisRequestType(BusinessTypeEnum.COMMUNITYTARGET.getCode())
|
.aiAnalysisRequestType(BusinessTypeEnum.COMMUNITYTARGET.getCode())
|
||||||
.build());
|
.build());
|
||||||
@@ -152,33 +147,15 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processDify(DiFyReq diFyReq, JSONArray difyResult, String aiAnalysisRequestId) throws InterruptedException, ExecutionException {
|
private void processDify(DifyCommunityTargetDTO difyCommunityTargetDTO ,String user, JSONArray difyResult, String aiAnalysisRequestId) throws InterruptedException, ExecutionException {
|
||||||
//舆情案件分析
|
//舆情案件分析
|
||||||
CompletableFuture<JSONObject> caseWorkFlow = CompletableFuture.supplyAsync(() -> callCommunityWorkFlow(diFyReq, caseToken),getAsyncExecutor)
|
CompletableFuture<JSONObject> caseWorkFlow = CompletableFuture.supplyAsync(() -> callCommunityWorkFlow(difyCommunityTargetDTO,user, caseToken),getAsyncExecutor);
|
||||||
.exceptionally(ex -> {
|
|
||||||
log.error("舆情案件分析失败: {}", ex.getMessage());
|
|
||||||
JSONObject errorResult = new JSONObject();
|
|
||||||
errorResult.put("error", "舆情案件分析失败: " + ex.getMessage());
|
|
||||||
return errorResult;
|
|
||||||
});
|
|
||||||
|
|
||||||
// 内容主题关键词打标
|
// 内容主题关键词打标
|
||||||
CompletableFuture<JSONObject> keywordWorkFlow = CompletableFuture.supplyAsync(() -> callCommunityWorkFlow(diFyReq, keywordToken),getAsyncExecutor)
|
CompletableFuture<JSONObject> keywordWorkFlow = CompletableFuture.supplyAsync(() -> callCommunityWorkFlow(difyCommunityTargetDTO,user, keywordToken),getAsyncExecutor);
|
||||||
.exceptionally(ex -> {
|
|
||||||
log.error("内容主题关键词打标失败: {}", ex.getMessage());
|
|
||||||
JSONObject errorResult = new JSONObject();
|
|
||||||
errorResult.put("error", "内容主题关键词打标失败: " + ex.getMessage());
|
|
||||||
return errorResult;
|
|
||||||
});
|
|
||||||
|
|
||||||
// litecrm线索分析
|
// litecrm线索分析
|
||||||
CompletableFuture<JSONObject> clueAnalysisWorkFlow = CompletableFuture.supplyAsync(() -> callCommunityWorkFlow(diFyReq, clueAnalysisToken),getAsyncExecutor)
|
CompletableFuture<JSONObject> clueAnalysisWorkFlow = CompletableFuture.supplyAsync(() -> callCommunityWorkFlow(difyCommunityTargetDTO,user, clueAnalysisToken),getAsyncExecutor);
|
||||||
.exceptionally(ex -> {
|
|
||||||
log.error("litecrm线索分析失败: {}", ex.getMessage());
|
|
||||||
JSONObject errorResult = new JSONObject();
|
|
||||||
errorResult.put("error", "litecrm线索分析失败: " + ex.getMessage());
|
|
||||||
return errorResult;
|
|
||||||
});
|
|
||||||
|
|
||||||
CompletableFuture<Void> allFutures = CompletableFuture.allOf(caseWorkFlow, keywordWorkFlow, clueAnalysisWorkFlow);
|
CompletableFuture<Void> allFutures = CompletableFuture.allOf(caseWorkFlow, keywordWorkFlow, clueAnalysisWorkFlow);
|
||||||
// 等待所有API调用完成
|
// 等待所有API调用完成
|
||||||
@@ -196,11 +173,12 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 调用案件,关键词,线索工作流
|
* 调用案件,关键词,线索工作流
|
||||||
* @param diFyReq
|
|
||||||
* @param token
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
private JSONObject callCommunityWorkFlow(DiFyReq diFyReq, String token) {
|
private JSONObject callCommunityWorkFlow(DifyCommunityTargetDTO difyCommunityTargetDTO ,String user, String token) {
|
||||||
|
log.info("开始调用案件,关键词,线索工作流,token: {}",token);
|
||||||
|
DiFyReq diFyReq = new DiFyReq();
|
||||||
|
diFyReq.setUser(user);
|
||||||
|
diFyReq.setInputs(difyCommunityTargetDTO);
|
||||||
diFyReq.setFlowId(token);
|
diFyReq.setFlowId(token);
|
||||||
JSONObject difResult = (JSONObject) diFyService.getDiFyObject(diFyReq);
|
JSONObject difResult = (JSONObject) diFyService.getDiFyObject(diFyReq);
|
||||||
return difResult;
|
return difResult;
|
||||||
@@ -263,6 +241,7 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
|||||||
|
|
||||||
caseResult.put("keyWords", keywordResult.getString("keyWords"));
|
caseResult.put("keyWords", keywordResult.getString("keyWords"));
|
||||||
caseResult.put("targetTag", clueAnalysisResult.getString("targetTag"));
|
caseResult.put("targetTag", clueAnalysisResult.getString("targetTag"));
|
||||||
|
caseResult.put("aiAnalysisRequestId", aiAnalysisRequestId);
|
||||||
//返回结果推送到社区的MQ
|
//返回结果推送到社区的MQ
|
||||||
rocketMQTemplate.syncSend(topic, caseResult.toString());
|
rocketMQTemplate.syncSend(topic, caseResult.toString());
|
||||||
log.info("舆情分析发送回调MQ完成: {}", caseResult);
|
log.info("舆情分析发送回调MQ完成: {}", caseResult);
|
||||||
@@ -650,11 +629,8 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
|||||||
//根据aiAnalysisRequestId更新请求日志表的difyRequest字段
|
//根据aiAnalysisRequestId更新请求日志表的difyRequest字段
|
||||||
syncUpdateDiFyRequest(difyCommunityTargetDTO, aiAnalysisError.getAiAnalysisRequestId());
|
syncUpdateDiFyRequest(difyCommunityTargetDTO, aiAnalysisError.getAiAnalysisRequestId());
|
||||||
|
|
||||||
DiFyReq diFyReq = new DiFyReq();
|
|
||||||
diFyReq.setUser(user);
|
|
||||||
diFyReq.setInputs(difyCommunityTargetDTO);
|
|
||||||
JSONArray difyResult = new JSONArray();
|
JSONArray difyResult = new JSONArray();
|
||||||
processDify(diFyReq,difyResult,aiAnalysisError.getAiAnalysisRequestId());
|
processDify(difyCommunityTargetDTO,user,difyResult,aiAnalysisError.getAiAnalysisRequestId());
|
||||||
|
|
||||||
//根据ai_analysis_request_id更新ai_analysis_errors表中的retry_count字段+1,更新status字段为1
|
//根据ai_analysis_request_id更新ai_analysis_errors表中的retry_count字段+1,更新status字段为1
|
||||||
aiAnalysisErrorsMapper.update(new AiAnalysisErrors(), new LambdaUpdateWrapper<AiAnalysisErrors>()
|
aiAnalysisErrorsMapper.update(new AiAnalysisErrors(), new LambdaUpdateWrapper<AiAnalysisErrors>()
|
||||||
|
|||||||
Reference in New Issue
Block a user