Skip to content

Commit 94c3c4f

Browse files
committed
hotfix: retry strategy update
1 parent 7e56cb6 commit 94c3c4f

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

src/main/java/com/haru/api/infra/redis/RedisReportConsumer.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
public class RedisReportConsumer {
1919

2020
private final StringRedisTemplate redisTemplate;
21-
private final MoodTrackerReportService moodTrackerReportService;
2221

2322
@Value("${queue-name}")
2423
private String QUEUE_KEY;
@@ -46,10 +45,6 @@ public void pollQueueEvery5Minutes() {
4645
redisTemplate.opsForList().leftPush("REPORT_WORKER_QUEUE", id);
4746
log.info("[RedisReportConsumer] REPORT_WORKER_QUEUE에 추가됨 → {}", id);
4847

49-
// ZSET에서 제거
50-
redisTemplate.opsForZSet().remove(QUEUE_KEY, id);
51-
log.info("[RedisReportConsumer] ZSET({})에서 제거됨 → {}", QUEUE_KEY, id);
52-
5348
} catch (Exception e) {
5449
log.error("[RedisReportConsumer] id={} 처리 중 에러", id, e);
5550
}

src/main/java/com/haru/api/infra/redis/ReportWorker.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.haru.api.domain.moodTracker.service.MoodTrackerReportService;
44
import lombok.RequiredArgsConstructor;
55
import lombok.extern.slf4j.Slf4j;
6+
import org.springframework.beans.factory.annotation.Value;
67
import org.springframework.data.redis.core.StringRedisTemplate;
78
import org.springframework.scheduling.annotation.Scheduled;
89
import org.springframework.stereotype.Component;
@@ -19,7 +20,10 @@ public class ReportWorker {
1920
private final MoodTrackerReportService reportService;
2021
private final ExecutorService executor = Executors.newFixedThreadPool(5); // 5개 병렬 Worker
2122

23+
@Value("${queue-name}")
24+
private String QUEUE_KEY;
2225
private static final String WORKER_QUEUE = "REPORT_WORKER_QUEUE";
26+
private static final String FAILED_QUEUE = "REPORT_FAILED_QUEUE";
2327

2428
@Scheduled(fixedDelay = 2000) // 2초마다 큐 확인
2529
public void consumeTasks() {
@@ -34,6 +38,9 @@ private void process(Long moodTrackerId) {
3438
try {
3539
reportService.generateAndUploadReportFileAndThumbnail(moodTrackerId);
3640
log.info("Report 생성 성공: {}", moodTrackerId);
41+
// ZSET에서 제거
42+
redisTemplate.opsForZSet().remove(QUEUE_KEY, moodTrackerId);
43+
log.info("[RedisReportConsumer] ZSET({})에서 제거됨 → {}", QUEUE_KEY, moodTrackerId);
3744
} catch (Exception e) {
3845
log.error("Report 생성 실패 (재시도 예정): {}", moodTrackerId, e);
3946

@@ -44,7 +51,7 @@ private void process(Long moodTrackerId) {
4451
redisTemplate.opsForList().leftPush(WORKER_QUEUE, moodTrackerId.toString());
4552
} else {
4653
log.error("재시도 한계 초과, 실패 큐로 이동: {}", moodTrackerId);
47-
redisTemplate.opsForList().leftPush("REPORT_FAILED_QUEUE", moodTrackerId.toString());
54+
redisTemplate.opsForList().leftPush(FAILED_QUEUE, moodTrackerId.toString());
4855
}
4956
}
5057
}

0 commit comments

Comments
 (0)