[Redis] 서버가 재시작 되면, 이미 생성된 채팅방 구독 정보가 사라지는 문제

·2023년 1월 27일
0

킁킁메이트

목록 보기
8/10
post-thumbnail
post-custom-banner

문제점🚨

수정된 코드를 서버에 적용하기 위해 재배포를 한 후, 이미 생성된 채팅방에 메세지가 전송되지 않는 문제가 발생했다.

정상 실행 로그


재배포하기 전, 정상적으로 작동하여 로그가 구현한 순서대로 찍힌 것을 확인할 수 있다.

잘못된 실행 로그

로그를 살펴보면 Publisher이 실행되고 Subscriber에 메서드가 제대로 호출되지 않았음을 알 수 있다.

사용자가 전송한 메세지는 DB에 정상적으로 저장되지만 채팅방을 구독하고 있는 사용자(메세지를 전송한 사용자 포함)에게 메세지가 전달되지 않았다.

작성된 코드

Redis pub/sub 기능은 ChannelTopic의 값이 같은 사용자를 확인해 메세지를 publish한다. 채팅방을 처음 생성할 때 생성되는 ChannelTopic은 DB에 저장되지 않음을 확인할 수 있다. 따라서 서버가 재시작 되었을 때, ChannelTopic 값이 유효하지 않았기 때문에 메세지가 채팅방에 뿌려지지 않았던 것이다.

📝리팩토링 과정은 별도의 게시글로 작성하였습니다.
채팅 기능 리팩토링 - Topic 단일화

개인 학습 내용이기 때문에 잘못된 정보가 있을 수 있습니다.
잘못된 정보는 댓글로 알려주시면 바로 수정할 수 있도록 하겠습니다. 🙇

profile
🧑‍💻백엔드 개발자, 조금씩 꾸준하게
post-custom-banner

0개의 댓글