수정된 코드를 서버에 적용하기 위해 재배포를 한 후, 이미 생성된 채팅방에 메세지가 전송되지 않는 문제가 발생했다.
재배포하기 전, 정상적으로 작동하여 로그가 구현한 순서대로 찍힌 것을 확인할 수 있다.
로그를 살펴보면 Publisher이 실행되고 Subscriber에 메서드가 제대로 호출되지 않았음을 알 수 있다.
사용자가 전송한 메세지는 DB에 정상적으로 저장되지만 채팅방을 구독하고 있는 사용자(메세지를 전송한 사용자 포함)에게 메세지가 전달되지 않았다.
Redis pub/sub 기능은 ChannelTopic의 값이 같은 사용자를 확인해 메세지를 publish한다. 채팅방을 처음 생성할 때 생성되는 ChannelTopic은 DB에 저장되지 않음을 확인할 수 있다. 따라서 서버가 재시작 되었을 때, ChannelTopic 값이 유효하지 않았기 때문에 메세지가 채팅방에 뿌려지지 않았던 것이다.
📝리팩토링 과정은 별도의 게시글로 작성하였습니다.
채팅 기능 리팩토링 - Topic 단일화
개인 학습 내용이기 때문에 잘못된 정보가 있을 수 있습니다.
잘못된 정보는 댓글로 알려주시면 바로 수정할 수 있도록 하겠습니다. 🙇