diff --git a/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java b/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java index f9edde27..3e8e6a6e 100644 --- a/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java +++ b/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java @@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; import com.rabbitmq.client.Channel; import lombok.extern.slf4j.Slf4j; +import org.apache.tomcat.jni.Time; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; @@ -41,9 +42,6 @@ public class GenerateConsumer { @Value("${redis.key.generateExceptionMap}") private String exceptionMapKey; - @Value("${redis.key.resultMap}") - private String resultMapKey; - @Value("${redis.key.generateResult}") private String generateResultKey; diff --git a/src/main/java/com/ai/da/service/GenerateService.java b/src/main/java/com/ai/da/service/GenerateService.java index c59513c8..a3f6ed7d 100644 --- a/src/main/java/com/ai/da/service/GenerateService.java +++ b/src/main/java/com/ai/da/service/GenerateService.java @@ -25,7 +25,7 @@ public interface GenerateService extends IService { List selectBatchByLibraryId(List libraryId); - GenerateCollectionVO getGenerateResult(String uniqueId); +// GenerateCollectionVO getGenerateResult(String uniqueId); List getGenerateResultList(List taskIdList); diff --git a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java index 1755eb60..1f56a4a9 100644 --- a/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/GenerateServiceImpl.java @@ -82,9 +82,6 @@ public class GenerateServiceImpl extends ServiceImpl i @Value("${redis.key.generateExceptionMap}") private String exceptionMapKey; - @Value("${redis.key.resultMap}") - private String resultMapKey; - @Value("${redis.key.generateResult}") private String generateResultKey; @@ -428,27 +425,9 @@ public class GenerateServiceImpl extends ServiceImpl i Long elementId = generateThroughImageTextDTO.getCollectionElementId(); validateGeneraType(new Generate(), text, elementId, generateType); - // 2、生成唯一id 使用uuid + // 2、生成唯一id 使用uuid,由于uuid重复的几率很小,故取消对uuid重复性的校验 String uuid = UUID.randomUUID().toString(); - int num = 1; - // 判断已经正常生成结果的uuid或正在排队的uuid中是否有相同的id - while ((redisUtil.isElementExistsInMap(resultMapKey, uuid) || - redisUtil.isElementExistsInZSet(consumptionOrderKey, uuid)) - && num < 10) { - uuid = UUID.randomUUID().toString(); - num++; - } - // 无依据确定的数字 - if (num > 10) { - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - uuid = UUID.randomUUID().toString(); - } - ArrayList taskIdList = new ArrayList<>(); for (int i = 1; i <= 4; i++) { String temp = uuid; @@ -480,7 +459,7 @@ public class GenerateServiceImpl extends ServiceImpl i return redisUtil.getRank(consumptionOrderKey, uniqueId); } - @Override + /*@Override public GenerateCollectionVO getGenerateResult(String uniqueId) { // 1、判断该请求是否已经异常 Boolean isMember = redisUtil.isElementExistsInMap(exceptionMapKey, uniqueId); @@ -529,7 +508,7 @@ public class GenerateServiceImpl extends ServiceImpl i }); return new GenerateCollectionVO(generateId, null, generatedCollectionItems); - } + }*/ @Override public List getGenerateResultList(List taskIdList) { @@ -579,7 +558,10 @@ public class GenerateServiceImpl extends ServiceImpl i public void cancelGenerate(Long userId, List uniqueIdList, String timeZone) { // todo 取消待优化 uniqueIdList.forEach(uniqueId -> { - // 1、确认当前消息是否还在排队中 + // 1、将需要取消的唯一id加入redis,以便及时取消生成 + redisUtil.addToSet(cancelSetKey, uniqueId); + + /*// 1、确认当前消息是否还在排队中 Boolean exists = redisUtil.isElementExistsInZSet(consumptionOrderKey, uniqueId); Boolean flag = Boolean.FALSE; if (exists) flag = redisUtil.getRank(consumptionOrderKey, uniqueId) > 1L ? Boolean.TRUE : Boolean.FALSE; @@ -600,9 +582,17 @@ public class GenerateServiceImpl extends ServiceImpl i // 3、直接发送取消请求到python端 pythonService.cancelGenerateTask(uniqueId); } - } + }*/ + String key = generateResultKey + ":" + uniqueId; - redisUtil.addToString(key, new Gson().toJson(new GenerateResultVO(uniqueId, null, null, "Cancelled")), CommonConstant.GENERATE_RESULT_EXPIRE_TIME); + GenerateResultVO generateResultVO = new Gson().fromJson(redisUtil.getFromString(key), GenerateResultVO.class); + // 判断当前task的状态是不是Fail + if (!generateResultVO.getStatus().equals("Fail")){ + // 2、不是,直接发送取消请求到python端 + pythonService.cancelGenerateTask(uniqueId); + // 3、更改result中当前taskId的状态 + redisUtil.addToString(key, new Gson().toJson(new GenerateResultVO(uniqueId, null, null, "Cancelled")), CommonConstant.GENERATE_RESULT_EXPIRE_TIME); + } // 3、考虑加一张表,专门用于记录哪些用户在什么时间进行了取消操作,包括已经异常的请求 GenerateCancel generateCancel = new GenerateCancel(userId, uniqueId, DateUtil.getByTimeZone(timeZone)); diff --git a/src/main/java/com/ai/da/service/impl/SuperResolutionServiceImpl.java b/src/main/java/com/ai/da/service/impl/SuperResolutionServiceImpl.java index eeb565e8..ee1fb6ff 100644 --- a/src/main/java/com/ai/da/service/impl/SuperResolutionServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/SuperResolutionServiceImpl.java @@ -57,9 +57,6 @@ public class SuperResolutionServiceImpl extends ServiceImpl