소켓 통신을 심심해서 구현해보고 찾아보던 와중
저번에는 채팅 어플리케이션을 gpt와 함께 SSE 방식을 사용해서 구현해보았는데
이번에는 spring의 socket 라이브러리인 stomp을 통해 구현해보았다
@Configuration
@EnableWebSocketMessageBroker
@RequiredArgsConstructor
public class WssConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
// 구독 경로 설정
registry.enableSimpleBroker("/sub"); // 클라이언트가 메시지를 받을 경로
registry.setApplicationDestinationPrefixes("/pub"); // 클라이언트가 메시지를 보낼 경로
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
// STOMP WebSocket 엔드포인트 설정
registry.addEndpoint("/ws-stomp")
.setAllowedOrigins("*"); // 모든 도메인에서 허용
}
}
이전에도 mq 관련해서 pubsub 모델을 통해 채팅 서비스를 간단하게 구현한 적이 있었는데 정의에 대해서만 간단하게 게시하려고 한다
- 발행자(Publisher):
- 발행자는 메시지를 발행(publish)하는 주체.
- 발행자는 메시지 브로커에게 특정 주제(Topic)로 메시지를 보내며, 어떤 구독자가 그 메시지를 받는지 신경 쓰지 않음
- 예시: 뉴스 웹사이트가 특정 뉴스 기사를 게시하는 것.
- 구독자(Subscriber):
- 구독자는 특정 주제(Topic)나 채널을 구독(subscribe)하는 주체
- 구독자는 자신이 구독한 주제에 새로운 메시지가 발행되면, 메시지 브로커로부터 그 메시지를 수신
- 예시: 사용자가 스포츠 뉴스만 구독하면, 스포츠와 관련된 뉴스가 발행될 때만 알림을 받는 것.
- 메시지 브로커(Message Broker):
- 메시지 브로커는 발행자와 구독자 사이에서 중개자 역할을 하는 시스템
- 발행자가 보낸 메시지를 해당 주제를 구독한 모든 구독자에게 전달
- 예시: Spring에서 메시지 브로커는 /sub과 같은 경로를 통해 구독자들에게 메시지를 전달
Pub/Sub 모델의 흐름
- 발행자가 메시지 발행:
- 발행자가 특정 주제로 메시지를 발행
- 예: 뉴스 발행 시스템에서 특정 뉴스 기사를 "/news" 주제로 발행.
- 메시지 브로커가 메시지 전달:
- 메시지 브로커가 발행된 메시지를 해당 주제를 구독하고 있는 모든 구독자에게 전달
- 예: "/news" 주제를 구독한 사용자가 해당 뉴스를 받게 됨
- 구독자가 메시지 수신:
- 구독자는 자신이 구독한 주제에 해당하는 메시지를 받음
- 예: 특정 사용자가 "/news" 주제를 구독하고 있다면, 해당 뉴스 기사를 수신
'Spring관련 기술 > 서버개발' 카테고리의 다른 글
Kakao 도서 정보 이용 AccessDeniedError 발생 (1) | 2024.08.31 |
---|---|
개발환경에서 테스트 데이터 넣기 (0) | 2024.08.31 |
MethodArgumentTypeMismatchException (0) | 2024.08.30 |
MissingServletRequestParameterException (0) | 2024.08.30 |
NoResourceFoundException (0) | 2024.08.30 |