From 6457c322f51c00486c4b446bd8fbb5b5805ac267 Mon Sep 17 00:00:00 2001 From: Curry4182 Date: Thu, 11 Apr 2024 22:55:04 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=B1=84=ED=8C=85=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=ED=95=A0=20=EA=B2=BD=EC=9A=B0=20=EC=B1=84=ED=8C=85=EC=9D=B4=20?= =?UTF-8?q?=EB=B3=B4=EC=9D=B4=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domains/chat/application/ChatService.java | 2 +- .../chat/ChatSendMessageEventListener.java | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lime-api/src/main/java/com/programmers/lime/domains/chat/application/ChatService.java b/lime-api/src/main/java/com/programmers/lime/domains/chat/application/ChatService.java index 630158a6..2f09491a 100644 --- a/lime-api/src/main/java/com/programmers/lime/domains/chat/application/ChatService.java +++ b/lime-api/src/main/java/com/programmers/lime/domains/chat/application/ChatService.java @@ -132,7 +132,7 @@ public void sendExitMessageToChatRoom(final Long chatRoomId) { ); } - @Cacheable(value = "chat", key = "#chatRoomId + '_' + #parameters.cursorId + '_' + #parameters.size") + @Cacheable(value = "chat", key = "#chatRoomId + '_' + #parameters.cursorId + '_' + #parameters.size", condition = "#parameters.cursorId != null") public ChatGetCursorServiceResponse getChatByCursor( final Long chatRoomId, final CursorPageParameters parameters diff --git a/lime-api/src/main/java/com/programmers/lime/global/event/chat/ChatSendMessageEventListener.java b/lime-api/src/main/java/com/programmers/lime/global/event/chat/ChatSendMessageEventListener.java index 64b3a1a6..271a5543 100644 --- a/lime-api/src/main/java/com/programmers/lime/global/event/chat/ChatSendMessageEventListener.java +++ b/lime-api/src/main/java/com/programmers/lime/global/event/chat/ChatSendMessageEventListener.java @@ -5,6 +5,8 @@ import org.springframework.stereotype.Component; import com.programmers.lime.domains.chat.model.ChatInfoWithMember; +import com.programmers.lime.redis.chat.ChatCursorCacheAppender; +import com.programmers.lime.redis.chat.model.ChatCursorCache; import com.programmers.lime.redis.chat.publisher.IChatPublisher; import com.programmers.lime.redis.chat.model.ChatInfoWithMemberCache; @@ -16,6 +18,8 @@ public class ChatSendMessageEventListener { private final IChatPublisher chatPublisher; + private final ChatCursorCacheAppender chatCursorCacheAppender; + @Async @EventListener public void sendMessage(final ChatSendMessageEvent event) { @@ -26,6 +30,10 @@ public void sendMessage(final ChatSendMessageEvent event) { ); chatPublisher.sendMessage("sub-chat", chatInfoWithMemberCache); + chatCursorCacheAppender.appendHeadNext( + event.chatInfoWithMember().chatRoomId(), + chatCursorCache(event.chatInfoWithMember()) + ); } public ChatInfoWithMemberCache chatInfoWithMember(final ChatInfoWithMember chatInfoWithMember, @@ -42,4 +50,20 @@ public ChatInfoWithMemberCache chatInfoWithMember(final ChatInfoWithMember chatI .destination(destination) .build(); } + + public ChatCursorCache chatCursorCache( + final ChatInfoWithMember chatInfoWithMember + ) { + return ChatCursorCache.builder() + .cursorId(chatInfoWithMember.chatId().toString()) + .chatId(chatInfoWithMember.chatId()) + .chatRoomId(chatInfoWithMember.chatRoomId()) + .memberId(chatInfoWithMember.memberId()) + .nickname(chatInfoWithMember.nickname()) + .profileImage(chatInfoWithMember.profileImage()) + .message(chatInfoWithMember.message()) + .sendAt(chatInfoWithMember.sendAt().toString()) + .chatType(chatInfoWithMember.chatType().name()) + .build(); + } }