diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/constant/AnalyseConstants.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/constant/AnalyseConstants.java index c2cbad3..01b7eab 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/constant/AnalyseConstants.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/constant/AnalyseConstants.java @@ -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"; } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AlgorithmProcessConsumer.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AlgorithmProcessConsumer.java new file mode 100644 index 0000000..eb2e396 --- /dev/null +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/analysis/service/impl/AlgorithmProcessConsumer.java @@ -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 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); + } +} diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java index f3db2c7..9eae0e0 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/controller/PatrolResultController.java @@ -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); } } } diff --git a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/AnalyseRequest.java b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/AnalyseRequest.java index 468288d..29c23c7 100644 --- a/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/AnalyseRequest.java +++ b/inspect-main/inspect-main-task/src/main/java/com/inspect/partrolresult/domain/AnalyseRequest.java @@ -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);