Browse Source

/*智巡调用初筛接口逻辑由同步改为异步:redis队列。*/

master
htjcAdmin 6 months ago
parent
commit
ae56a060d6
4 changed files with 67 additions and 5 deletions
  1. +2
    -0
      inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/constant/AnalyseConstants.java
  2. +44
    -0
      inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AlgorithmProcessConsumer.java
  3. +18
    -5
      inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java
  4. +3
    -0
      inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/AnalyseRequest.java

+ 2
- 0
inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/constant/AnalyseConstants.java View File

@ -36,4 +36,6 @@ public class AnalyseConstants {
public static final String ANALYSE_FILTER_URL = "ANALYSE_FILTER_URL";
public static final String ANALYSIS_BIG_URL = "ANALYSIS_BIG_URL";
public static final String MAX_NUM = "MAX_NUM";
public static final String ALGORITHM_REQUEST_QUEUE = "algorithm:request:queue";
}

+ 44
- 0
inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AlgorithmProcessConsumer.java View File

@ -0,0 +1,44 @@
package com.inspect.analysis.service.impl;
import com.alibaba.nacos.shaded.com.google.gson.Gson;
import com.inspect.analysis.constant.AnalyseConstants;
import com.inspect.base.redis.service.RedisService;
import com.inspect.partrolresult.domain.AnalyseRequest;
import com.inspect.partrolresult.service.AnalyseRemoteService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@Component
public class AlgorithmProcessConsumer {
private final Logger logger = LoggerFactory.getLogger(AlgorithmProcessConsumer.class);
@Resource
private RedisService redisService;
@Resource
private AnalyseRemoteService analyseRemoteService;
@Scheduled(fixedDelay = 3000)
public void pollAndProcess() {
String requestDataInRedis;
RedisTemplate<String, String> redisTemplate = redisService.redisTemplate;
while ((requestDataInRedis = redisTemplate.opsForList().leftPop(AnalyseConstants.ALGORITHM_REQUEST_QUEUE)) != null) {
try {
logger.info("AlgorithmProcessConsumer pollAndProcess queueSize: {}, requestData:{}", getQueueSize(), requestDataInRedis);
AnalyseRequest analyseRequest = new Gson().fromJson(requestDataInRedis, AnalyseRequest.class);
analyseRemoteService.sendRequest(analyseRequest, analyseRequest.getTypeList(), analyseRequest.isFilter());
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
}
public long getQueueSize() {
return redisService.redisTemplate.opsForList().size(AnalyseConstants.ALGORITHM_REQUEST_QUEUE);
}
}

+ 18
- 5
inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java View File

@ -2,10 +2,9 @@ package com.inspect.partrolresult.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.shaded.com.google.gson.Gson;
import com.inspect.analysis.constant.AnalyseConstants;
import com.inspect.analysis.domain.ResultAnalysis;
import com.inspect.analysis.domain.resultList;
import com.inspect.analysis.domain.results;
import com.inspect.analysis.service.IResultAnalysisService;
import com.inspect.base.core.constant.AlgConstants;
import com.inspect.base.core.constant.Color;
@ -942,8 +941,15 @@ public class PatrolResultController extends BaseController {
analyseReq.setSftpUsername(username);
analyseReq.setSftpPassword(password);
if (filterList.get(0).getImageUrlList() != null && filterList.get(0).getImageUrlList().length > 0) {
String meterFilter = patrolTaskService.selectConfigByKey(AnalyseConstants.ANALYSE_IS_METER_FILTER);
analyseRemoteService.sendRequest(analyseReq, filterList.get(0).getTypeList(), "1".equals(meterFilter));
// 初筛算法调用改为异步调用
final String meterFilter = patrolTaskService.selectConfigByKey(AnalyseConstants.ANALYSE_IS_METER_FILTER);
//analyseRemoteService.sendRequest(analyseReq, filterList.get(0).getTypeList(), "1".equals(meterFilter));
analyseReq.setAlgorithmType("filterAlgorithm");
analyseReq.setFilter("1".equals(meterFilter));
analyseReq.setTypeList(filterList.get(0).getTypeList());
String requestDataToRedis = new Gson().toJson(analyseReq);
logger.info("callRemoteAlgorithm filterList requestDataToRedis: {}", requestDataToRedis);
redisService.redisTemplate.opsForList().rightPush(AnalyseConstants.ALGORITHM_REQUEST_QUEUE, requestDataToRedis);
}
}
@ -959,7 +965,14 @@ public class PatrolResultController extends BaseController {
analyseReq.setSftpUsername(username);
analyseReq.setSftpPassword(password);
if (bigModelList.get(0).getImageUrlList() != null && bigModelList.get(0).getImageUrlList().length > 0) {
analyseRemoteService.sendRequest(analyseReq, bigModelList.get(0).getTypeList(), true);
// 大模型算法调用改为异步调用
//analyseRemoteService.sendRequest(analyseReq, bigModelList.get(0).getTypeList(), true);
analyseReq.setFilter(true);
analyseReq.setAlgorithmType("bigModelAlgorithm");
analyseReq.setTypeList(bigModelList.get(0).getTypeList());
String requestDataToRedis = new Gson().toJson(analyseReq);
logger.info("callRemoteAlgorithm bigModelList requestDataToRedis: {}", requestDataToRedis);
redisService.redisTemplate.opsForList().rightPush(AnalyseConstants.ALGORITHM_REQUEST_QUEUE, requestDataToRedis);
}
}
}


+ 3
- 0
inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/AnalyseRequest.java View File

@ -25,6 +25,9 @@ public class AnalyseRequest implements Serializable {
private String sftpHostPort;
private String sftpUsername;
private String sftpPassword;
private boolean isFilter;
private String[] typeList;
private String algorithmType;
public AnalyseRequest clone() {
return JSONObject.parseObject(JSONObject.toJSONString(this), AnalyseRequest.class);


Loading…
Cancel
Save