Spring/스프링 이론

Message Broker STOMP 개념

블로그 주인장 2024. 1. 24.

서론

Message를 송-수신할 때 사용하는 MessageBroker 중 STOMP 프로토콜에 대해 알아보겠습니다.

 

 

STOMP란?

Simple Text Oriented Messaging Protocol 의 약자로써, WebSocket의 서브 프로토콜 입니다.

 

웹소켓은 Text와 Binary 형식의 타입을 정하긴 하지만, 어떠한 규격도 정해져있지 않습니다.

하지만 STOMP의 경우에는 다음과 같은 형식을 따라갑니다.

COMMAND
header1:value1
header2:value2

Body^@

 

 

STOMP의 커맨드 목록은 다음과 같습니다.

 

클라이언트 프레임

  • SEND
  • SUBSCRIBE
  • UNSUBSCRIBE
  • BEGIN
  • COMMIT
  • ABORT
  • ACK
  • NACK
  • DISCONNECT

서버 프레임

  • MESSAGE
  • RECEIPT
  • ERROR

더 자세한 사항은 링크를 참고해주세요.

 

 

위의 형식과 같이 기본적으로 Pulish-Subscribe 구조로 되어있습니다.

 

Publish-Subscribe 구조란 메시지를 공급하는 주체와 소비하는 주체를 분리해 제공하는 메시징 방법입니다.

따라서 메시지를 전송하고, 받아서 처리하는 부분이 확실하게 구조로 정해져있습니다.

 

STOMP도 위의 이미지와 같이 수행됩니다.

 

단순하게 메시지를 보낸다면 StompBrokerRelay로, 다른 처리가 필요하다면(DB저장, JWT 검증) SimAnnotationMethod를 거쳐 서버에서 작업을 처리한 뒤에 메시지 브로커를 통해 header에 있는 destination으로 구독하고 있는 모든 클라이언트에게 메시지를 보냅니다.

 

STOMP의 장점

  1. 웹 소켓에 비해 핸들러, 형식, 프로토콜을 지정할 필요가 없어 간편합니다.(즉, 하위 프로토콜과 메시지 컨벤션을 정의할 필요 X)
  2. 메시지 브로커를 사용할 수 있다. 외부 메시지 브로커(ex. RabbitMQ, Kafka 등) 를 사용하면 세션 수용 크기, 메시지 유실, 모니터링 등 다양한 기능을 사용할 수 있다.

 

Question

STOMP 관련 질문 예시

 

References

https://tecoble.techcourse.co.kr/post/2021-09-05-web-socket-practice/

 

https://velog.io/@msung99/%EC%9B%B9%EC%86%8C%EC%BC%93%EA%B3%BC-STOMP%EB%A5%BC-%ED%86%B5%ED%95%9C-%EC%8B%A4%EC%8B%9C%EA%B0%84-%ED%86%B5%EC%8B%A0-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

 

https://trans.yonghochoi.com/translations/nats_publish_subscribe.ko.html

 

 

본 포스트는 작성자가 공부한 내용을 바탕으로 작성한 글입니다.
잘못된 내용이 있을 시 언제든 댓글로 피드백 부탁드리겠습니다.
항상 정확한 내용을 포스팅하도록 노력하겠습니다.

반응형

'Spring > 스프링 이론' 카테고리의 다른 글

Pageable을 처리하는 여러 방법  (0) 2024.01.25
Http Interface 사용하기  (0) 2024.01.08
@RequestBody vs @RequestParam vs @RequestPart  (0) 2024.01.05

댓글