From b9540c768657a1a3c215b219658bdf19b92f4107 Mon Sep 17 00:00:00 2001 From: 2ghrms Date: Fri, 22 Aug 2025 00:59:52 +0900 Subject: [PATCH 1/2] hotfix: erase trascational in redis consumer --- src/main/java/com/haru/api/infra/redis/RedisReportConsumer.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/haru/api/infra/redis/RedisReportConsumer.java b/src/main/java/com/haru/api/infra/redis/RedisReportConsumer.java index 7d3c2630..7882c5d3 100644 --- a/src/main/java/com/haru/api/infra/redis/RedisReportConsumer.java +++ b/src/main/java/com/haru/api/infra/redis/RedisReportConsumer.java @@ -24,7 +24,6 @@ public class RedisReportConsumer { private String QUEUE_KEY; private static final long BATCH_SIZE = 20; - @Transactional @Scheduled(cron = "0 0/5 * * * *") // 정각부터 5분 마다 실행 public void pollQueueEvery30Minutes() { long now = Instant.now().getEpochSecond(); From 29b82318c73ca0246788baa1f7a3338e5a4115a7 Mon Sep 17 00:00:00 2001 From: 2ghrms Date: Fri, 22 Aug 2025 01:04:08 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor/#336:=20=EC=84=A4=EB=AC=B8=20?= =?UTF-8?q?=EB=A7=88=EA=B0=90=EC=9D=BC=EC=8B=9C=EC=97=90=20=EC=8B=A4?= =?UTF-8?q?=ED=8C=A8=EC=8B=9C=20retry=20=EC=A0=84=EB=9E=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 워커 트랜잭션 제거 --- .../java/com/haru/api/infra/redis/RedisReportConsumer.java | 2 +- src/main/java/com/haru/api/infra/redis/ReportWorker.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/haru/api/infra/redis/RedisReportConsumer.java b/src/main/java/com/haru/api/infra/redis/RedisReportConsumer.java index 7882c5d3..fb6fee06 100644 --- a/src/main/java/com/haru/api/infra/redis/RedisReportConsumer.java +++ b/src/main/java/com/haru/api/infra/redis/RedisReportConsumer.java @@ -36,7 +36,7 @@ public void pollQueueEvery30Minutes() { for (String id : dueIds) { // Worker Queue로 push - redisTemplate.opsForList().leftPush("report-worker-queue", id); + redisTemplate.opsForList().leftPush("REPORT_WORKER_QUEUE", id); // ZSET에서는 제거 redisTemplate.opsForZSet().remove(QUEUE_KEY, id); } diff --git a/src/main/java/com/haru/api/infra/redis/ReportWorker.java b/src/main/java/com/haru/api/infra/redis/ReportWorker.java index b20e5bf1..e79ca00f 100644 --- a/src/main/java/com/haru/api/infra/redis/ReportWorker.java +++ b/src/main/java/com/haru/api/infra/redis/ReportWorker.java @@ -19,7 +19,7 @@ public class ReportWorker { private final MoodTrackerReportService reportService; private final ExecutorService executor = Executors.newFixedThreadPool(5); // 5개 병렬 Worker - private static final String WORKER_QUEUE = "report-worker-queue"; + private static final String WORKER_QUEUE = "REPORT_WORKER_QUEUE"; @Scheduled(fixedDelay = 2000) // 2초마다 큐 확인 public void consumeTasks() { @@ -44,7 +44,7 @@ private void process(Long moodTrackerId) { redisTemplate.opsForList().leftPush(WORKER_QUEUE, moodTrackerId.toString()); } else { log.error("재시도 한계 초과, 실패 큐로 이동: {}", moodTrackerId); - redisTemplate.opsForList().leftPush("report-failed-queue", moodTrackerId.toString()); + redisTemplate.opsForList().leftPush("REPORT_FAILED_QUEUE", moodTrackerId.toString()); } } }