From 785faf8c5a86e612c6c76b798e253879c0a39827 Mon Sep 17 00:00:00 2001 From: guyue <1721849008@qq.com> Date: 星期日, 13 七月 2025 09:58:39 +0800 Subject: [PATCH] 获取结果状态更新 --- src/main/java/com/linghu/controller/CollectController.java | 38 +++++++++++++------------------------- 1 files changed, 13 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/linghu/controller/CollectController.java b/src/main/java/com/linghu/controller/CollectController.java index 8882145..6a5c2c3 100644 --- a/src/main/java/com/linghu/controller/CollectController.java +++ b/src/main/java/com/linghu/controller/CollectController.java @@ -71,10 +71,9 @@ private UserService userService; @Autowired private OrderService orderService; - // 1. 使用线程安全的队列实现 - private final BlockingQueue<SearchTaskRequest> taskQueue = new LinkedBlockingQueue<>(); - // 添加队列访问锁 - private final ReentrantLock queueLock = new ReentrantLock(); + + private static final Queue<SearchTaskRequest> taskQueue = new LinkedList<>(); + private static boolean isProcessing = false; @PostMapping("/search") @@ -99,13 +98,7 @@ } // 将新的任务请求加入队列 -// taskQueue.add(searchTaskRequest); - queueLock.lock(); - try { - taskQueue.add(searchTaskRequest); - } finally { - queueLock.unlock(); - } + taskQueue.add(searchTaskRequest); // 如果当前没有任务在处理中,则启动任务队列的处理 if (!isProcessing) { @@ -571,13 +564,10 @@ // return Mono.just(ResponseResult.error(500, "取消关键词任务失败: " + e.getMessage())); // }); // } -// 线程安全的队列移除方法 + private List<SearchTaskRequest> removeTasksFromQueueByKeywordId(Integer keywordId) { List<SearchTaskRequest> removedTasks = new ArrayList<>(); - // 使用锁保证队列操作的原子性 - queueLock.lock(); - try { Iterator<SearchTaskRequest> iterator = taskQueue.iterator(); while (iterator.hasNext()) { SearchTaskRequest task = iterator.next(); @@ -586,9 +576,7 @@ iterator.remove(); } } - } finally { - queueLock.unlock(); - } + log.info("从队列中移除了 {} 个与关键词ID {} 相关的任务", removedTasks.size(), keywordId); return removedTasks; @@ -839,8 +827,8 @@ LambdaQueryWrapper<KeywordTask> keywordTaskWrapper = new LambdaQueryWrapper<>(); keywordTaskWrapper.eq(KeywordTask::getTask_id, result.getTask_id()); KeywordTask keywordTask = keywordTaskService.getOne(keywordTaskWrapper); -// keywordTask.setStatus("completed"); -// keywordTaskService.updateById(keywordTask); + keywordTask.setStatus("completed"); + keywordTaskService.updateById(keywordTask); Keyword keyword = keywordService.getById(keywordTask.getKeyword_id()); if (keyword == null) { @@ -854,16 +842,16 @@ List<KeywordTask> keywordTasks = keywordTaskService.list(keywordTaskWrapper2); //如果全部为completed 关键词也为completed ,如果关联关系没有任务id,或者状态为running ,关键词为submitted, - if (keywordTasks.stream().allMatch(task -> "completed".equals(task.getStatus())) ) { + if (keywordTasks.stream().allMatch(task -> "completed".equals(task.getStatus()) || "false".equals(task.getStatus()) || "canceled".equals(task.getStatus())) ) { keyword.setStatus("completed"); keywordService.updateById(keyword); } //如果有一个task为failed设置关键词为false - else if (keywordTasks.stream().anyMatch(task -> "failed".equals(task.getStatus()))) { - keyword.setStatus("false"); - keywordService.updateById(keyword); - } +// else if (keywordTasks.stream().anyMatch(task -> "failed".equals(task.getStatus()))) { +// keyword.setStatus("false"); +// keywordService.updateById(keyword); +// } -- Gitblit v1.7.1