websocket2 [Spring WebSocket] Redis를 이용한 채팅 고도화 0. In-Memory 기반 Message Broker 문제점 Spring에서 제공하는 STOMP를 활용해 내장된 Simple Message Broker를 통해 채팅 서버 구현이 가능하지만, Spring 서버의 내부 메모리에서 동작하게 되면 아래와 같은 문제가 발생할 수 있다. 서버거 다운되거나 재시작하면 Message Broker에 있는 데이터들이 유실될 수 있다. 다수의 서버일 경우 서버 간 채팅방을 공유할 수 없어 다른 서버 간에 있는 사용자와의 채팅이 불가능하다. 이러한 문제를 해결하기 위해 외부 Message Broker를 사용할 수 있다. 대표적으로 Apache Kafka, Redis, RabbitMQ 등이 있다. 1. Redis Redis는 STOMP 프로토콜을 지원하지 않지만, Redis가.. 2023. 9. 1. [Spring WebSocket] Spring WebSocket STOMP 적용 1. STOMP STOMP(Simple Text Oriented Messaging Protocol)는 메시징 전송을 효율적으로 하기 위한 프로토콜로, PUB/SUB 기반으로 동작한다. WebSocket만 사용해서 구현하면 해당 메시지가 어떤 요청인지, 어떤 포맷인지, 메시지 통신 과정을 어떻게 처리해야 하는지 정해져 있지 않아 일일이 구현해야 한다. STOMP를 서브 프로토콜로 사용하면 클라이언트와 서버가 서로 통신하는 데 있어 메시지의 형식, 유형, 내용 등을 정의해준다. 따라서 메시지를 송신, 수신에 대한 처리를 명확하게 정의할 수 있으며, WebSocketHandler를 직접 구현할 필요없이, @MessageMapping과 같은 어노테이션을 사용해서 메시지 발행 시 엔드포인트를 별도로 분리해서 관리.. 2023. 6. 19. 이전 1 다음