From 86edacc57b954565e81ee8755849023f6e79e1ec Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Tue, 30 Dec 2025 09:32:18 +0800
Subject: [PATCH] 优化
---
ard-quartz/src/main/java/com/ard/quartz/task/MediaTask.java | 82 +++++++++++++++++++++++++++++-----------
1 files changed, 59 insertions(+), 23 deletions(-)
diff --git a/ard-quartz/src/main/java/com/ard/quartz/task/MediaTask.java b/ard-quartz/src/main/java/com/ard/quartz/task/MediaTask.java
index deef01b..1e5258a 100644
--- a/ard-quartz/src/main/java/com/ard/quartz/task/MediaTask.java
+++ b/ard-quartz/src/main/java/com/ard/quartz/task/MediaTask.java
@@ -113,7 +113,12 @@
}
private void processOneVideo(ArdMediaVideo video) {
- try {
+ int maxRetries = 3; // 最大重试次数
+ int retryDelay = 3000; // 每次重试等待 3 秒
+ int attempt = 0;
+
+ while (attempt < maxRetries) {
+ attempt++;
try (InputStream is = openUrlInputStream(video.getSourceUrl())) {
if (is != null) {
String mediaUrl = ossServiceContext.upload(
@@ -123,26 +128,46 @@
MimeTypeUtils.VIDEO_MP4
);
video.setMediaUrl(mediaUrl);
+
+ // 生成视频缩略图
+ processVideoThumbnail(video);
+
+ video.setSyncStatus(2); // 成功
+ break; // 上传成功,退出循环
+ } else {
+ log.warn("视频尚未生成,尝试重试 {}/{}", attempt, maxRetries);
}
+ } catch (Exception e) {
+ log.error("视频同步异常 videoId={}, 尝试 {}/{}", video.getId(), attempt, maxRetries, e);
}
- processVideoThumbnail(video);
- video.setSyncStatus(2);
- } catch (Exception e) {
- video.setSyncStatus(3);
- log.error("视频处理失败 videoId={}", video.getId(), e);
- } finally {
- video.setUpdateTime(new Date());
- try {
- ardMediaVideoMapper.updateArdMediaVideo(video);
- } catch (Exception e) {
- log.error("更新视频状态失败 videoId={}", video.getId(), e);
+ if (attempt < maxRetries) {
+ try {
+ Thread.sleep(retryDelay);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ break;
+ }
+ } else {
+ video.setSyncStatus(3); // 达到最大重试仍失败
}
+ }
+
+ video.setUpdateTime(new Date());
+ try {
+ ardMediaVideoMapper.updateArdMediaVideo(video);
+ } catch (Exception e) {
+ log.error("更新视频状态失败 videoId={}", video.getId(), e);
}
}
private void processOnePic(ArdMediaPic pic) {
- try {
+ int maxRetries = 3; // 最大重试次数
+ int retryDelay = 2000; // 每次重试等待 2 秒
+ int attempt = 0;
+
+ while (attempt < maxRetries) {
+ attempt++;
try (InputStream inputStream = openUrlInputStream(pic.getSourceUrl())) {
if (inputStream != null) {
String url = ossServiceContext.upload(
@@ -153,20 +178,31 @@
);
pic.setMediaUrl(url);
pic.setSyncStatus(2); // 成功
+ break; // 上传成功,退出循环
} else {
- pic.setSyncStatus(3); // 下载失败
+ log.warn("图片尚未生成,尝试重试 {}/{}", attempt, maxRetries);
}
- }
- } catch (Exception e) {
- log.error("图片同步失败 taskId={}, photoId={}", pic.getTaskId(), pic.getId(), e);
- pic.setSyncStatus(3); // 异常
- } finally {
- pic.setUpdateTime(new Date());
- try {
- ardMediaPicMapper.updatePic(pic);
} catch (Exception e) {
- log.error("更新图片状态失败 photoId={}", pic.getId(), e);
+ log.error("图片同步异常 taskId={}, photoId={}, 尝试 {}/{}", pic.getTaskId(), pic.getId(), attempt, maxRetries, e);
}
+
+ if (attempt < maxRetries) {
+ try {
+ Thread.sleep(retryDelay);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ break;
+ }
+ } else {
+ pic.setSyncStatus(3); // 达到最大重试仍失败
+ }
+ }
+
+ pic.setUpdateTime(new Date());
+ try {
+ ardMediaPicMapper.updatePic(pic);
+ } catch (Exception e) {
+ log.error("更新图片状态失败 photoId={}", pic.getId(), e);
}
}
--
Gitblit v1.9.3