diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/usercreatorchat/websocket/UserCreatorChatRoomMessageBroker.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/usercreatorchat/websocket/UserCreatorChatRoomMessageBroker.kt index 09328707..a0b8a744 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/usercreatorchat/websocket/UserCreatorChatRoomMessageBroker.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/usercreatorchat/websocket/UserCreatorChatRoomMessageBroker.kt @@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper import org.springframework.data.redis.connection.Message import org.springframework.data.redis.connection.MessageListener import org.springframework.data.redis.core.StringRedisTemplate -import org.springframework.data.redis.listener.PatternTopic +import org.springframework.data.redis.listener.ChannelTopic import org.springframework.data.redis.listener.RedisMessageListenerContainer import org.springframework.stereotype.Component import org.springframework.web.socket.TextMessage @@ -19,7 +19,7 @@ class UserCreatorChatRoomMessageBroker( listenerContainer: RedisMessageListenerContainer ) : MessageListener { init { - listenerContainer.addMessageListener(this, PatternTopic("$ROOM_CHANNEL_PREFIX:*")) + listenerContainer.addMessageListener(this, ChannelTopic(ROOM_CHANNEL)) } fun publish(roomId: Long, memberId: Long, payload: String) { @@ -28,7 +28,7 @@ class UserCreatorChatRoomMessageBroker( memberId = memberId, payload = payload ) - stringRedisTemplate.convertAndSend(roomChannel(roomId), objectMapper.writeValueAsString(message)) + stringRedisTemplate.convertAndSend(ROOM_CHANNEL, objectMapper.writeValueAsString(message)) } override fun onMessage(message: Message, pattern: ByteArray?) { @@ -50,11 +50,7 @@ class UserCreatorChatRoomMessageBroker( } companion object { - private const val ROOM_CHANNEL_PREFIX = "v2:user-creator-chat:ws:room" - - fun roomChannel(roomId: Long): String { - return "$ROOM_CHANNEL_PREFIX:$roomId" - } + private const val ROOM_CHANNEL = "v2:user-creator-chat:ws:room" } } diff --git a/src/test/kotlin/kr/co/vividnext/sodalive/v2/usercreatorchat/websocket/UserCreatorChatRoomMessageBrokerTest.kt b/src/test/kotlin/kr/co/vividnext/sodalive/v2/usercreatorchat/websocket/UserCreatorChatRoomMessageBrokerTest.kt index b2f5d80f..7deeb828 100644 --- a/src/test/kotlin/kr/co/vividnext/sodalive/v2/usercreatorchat/websocket/UserCreatorChatRoomMessageBrokerTest.kt +++ b/src/test/kotlin/kr/co/vividnext/sodalive/v2/usercreatorchat/websocket/UserCreatorChatRoomMessageBrokerTest.kt @@ -9,7 +9,7 @@ import org.mockito.Mockito import org.springframework.data.redis.connection.Message import org.springframework.data.redis.connection.MessageListener import org.springframework.data.redis.core.StringRedisTemplate -import org.springframework.data.redis.listener.PatternTopic +import org.springframework.data.redis.listener.ChannelTopic import org.springframework.data.redis.listener.RedisMessageListenerContainer import org.springframework.web.socket.TextMessage import org.springframework.web.socket.WebSocketSession @@ -29,13 +29,13 @@ class UserCreatorChatRoomMessageBrokerTest { ) @Test - @DisplayName("room channel로 target member와 payload를 publish한다") + @DisplayName("고정 room channel로 target member와 payload를 publish한다") fun shouldPublishMessageToRoomChannel() { broker.publish(roomId = 10L, memberId = 20L, payload = "{\"type\":\"MESSAGE\"}") val messageCaptor = ArgumentCaptor.forClass(String::class.java) Mockito.verify(stringRedisTemplate).convertAndSend( - Mockito.eq("v2:user-creator-chat:ws:room:10"), + Mockito.eq("v2:user-creator-chat:ws:room"), messageCaptor.capture() ) @@ -46,11 +46,11 @@ class UserCreatorChatRoomMessageBrokerTest { } @Test - @DisplayName("생성 시 ws room pattern topic을 구독한다") - fun shouldSubscribeRoomPatternOnCreation() { + @DisplayName("생성 시 ws room 고정 channel topic을 구독한다") + fun shouldSubscribeRoomChannelOnCreation() { Mockito.verify(listenerContainer).addMessageListener( Mockito.any(MessageListener::class.java), - Mockito.eq(PatternTopic("v2:user-creator-chat:ws:room:*")) + Mockito.eq(ChannelTopic("v2:user-creator-chat:ws:room")) ) }