먼저 채팅 내역을 어떻게 저장할까 고민하던 중 튜터님께 블로그를 하나 추천 받았다.
https://www.daddyprogrammer.org/post/4731/spring-websocket-chatting-server-redis-pub-sub/
Spring websocket chatting server(3) - 여러대의 채팅서버간에 메시지 공유하기 by Redis pub/sub
앞 장에서 실습을 통해 채팅을 구현해 보았습니다. websocket과 Stomp를 이용한 구현만으로도 채팅의 기본 기능은 충분히 구현할 수 있는 것을 확인할 수 있었습니다. 하지만 서비스에 사용하려면
www.daddyprogrammer.org
해당 블로그는 다중서버에서 메시지를 주고받을 수 있게 함과 동시에 Redis 에 전달된 메시지를 저장할 수 있게 개발하는 참고글이다.
현재 내 프로젝트는 단일서버에선 연결된 메시지 브로커를 이용해 메시지를 실시간으로 잘 주고 받을 수 있다.
하지만 다음과 같이 다중서버로 확장이 된다면 다음과 같이 서로 다른 서버에 접속한 클라이언트는 메시지를 주고 받을 수 없게 된다.
이와 같은 문제를 해결 하기 위해선 각 서버들이 하나의 중앙서버로 연결되어 중앙서버의 메시지 브로커의 Topic 으로 메시지를 발행하면 각 서버들은 동일한 Topic을 구독하게 되어 메시지를 주고 받을 수 있게 된다.
아래와 같이 변경
블로그글에 있는 내용을 적용하여 다음과 같이 Redis pub/sub을 이용하면서 메시지가 발행될 때 Redis-cli에 저장하는 로직을 구현하여 문제를 해결하였다.
'개발 > 내일배움캠프 TIL' 카테고리의 다른 글
[최종프로젝트] 쓰레드풀 튜닝 / 캐시 전략을 활용한 채팅 메시지 성능 개선 (0) | 2025.03.24 |
---|---|
[TIL #42] [최종프로젝트] 채팅 서비스 개발2 - 채팅방 설계 (0) | 2025.02.19 |
[TIL #40] 자바에서 데이터베이스 접근하기 (0) | 2025.01.14 |
[TIL #39] 탈퇴한 회원 관리 테이블 분리 VS 필드 트러블 슈팅 (0) | 2025.01.12 |
[TIL #38] Spring 심화 주차 과제 Lv 6 기능 개선하기 (0) | 2025.01.06 |