From 9beaeab30d9b67a30fb996735ca142dfb82e81a1 Mon Sep 17 00:00:00 2001 From: Kim JinSeon Date: Thu, 24 Oct 2024 16:24:11 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=97=90=EB=9F=AC=20=EB=A1=9C=EC=A7=81?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/application/UserQueueService.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/service/gateway/server/src/main/java/com/sparta/gateway/server/application/UserQueueService.java b/service/gateway/server/src/main/java/com/sparta/gateway/server/application/UserQueueService.java index 29caa1e..d375899 100644 --- a/service/gateway/server/src/main/java/com/sparta/gateway/server/application/UserQueueService.java +++ b/service/gateway/server/src/main/java/com/sparta/gateway/server/application/UserQueueService.java @@ -30,13 +30,24 @@ public class UserQueueService { private Long activeUsers; public Mono registerUser(String userId) { + return reactiveRedisTemplate.opsForZSet() + .rank(USER_QUEUE_PROCEED_KEY, userId) + .defaultIfEmpty(-1L) + .flatMap(rank -> { + if (rank >= 0) { + return updateUserActivityTime(userId) + .thenReturn(new RegisterUserResponse(0L)); + } - lockComponent.execute("registerUser", 1000, 1000, () -> { - activeUsers = reactiveRedisTemplate.opsForSet().size(USER_ACTIVE_SET_KEY).block(); - }); - - return activeUsers < MAX_ACTIVE_USERS ? addToProceedQueue(userId) : checkAndAddToQueue(userId); - + return reactiveRedisTemplate.opsForSet().size(USER_ACTIVE_SET_KEY) + .flatMap(activeUsers -> { + if (activeUsers < MAX_ACTIVE_USERS) { + return addToProceedQueue(userId); + } else { + return checkAndAddToQueue(userId); + } + }); + }); } private Mono checkAndAddToQueue(String userId) {