STOMP란?
(STOMP : Simple Text Oriented Messaging Protocol)
STOMP는 메시지 전송을 효율적으로 하기 위한 프로토콜로, 기본적으로 Publish-Subscribe 구조로 되어있다.
Publish-Subscribe 구조란 메시지를 공급하는 주체와 소비하는 주체를 분리해 제공하는 메시징 방법이다.
따라서 메시지를 전송하고 / 받아서 처리하는 부분이 확실하게 구조로 정해져있다.
COMMAND
key(header):value
key(header):value
...
BODY^@
COMMAND 리스트
- CONNECT, SEND, SUBSCRIBE, UNSUBSCRIBE, BEGIN, COMMIT, ABORT, ACK, NACK, DISCONNECT
STOMP 특징
- STOMP 프로토콜은 클라이언트/서버 간 전송할 메시지의 유형, 형식, 내용들을 정의한 규칙.
- TCP 또는 WebSocket과 같은 양방향 네트워크 프로토콜 기반으로 동작.
- 헤더 값을 기반으로 통신 시 인증처리를 구현할 수 있음.
Message Broker
- Publisher로 부터 전달받은 메시지를 Subscriber에게 메시지를 주고 받게 해주는 중간 역할을 함.
- 클라이언트는 SEND, SUBSCRIBE 명령을 통해서 메시지의 내용과 수신 대상을 설명하는 "destination" 헤더와 함께 메시지에 대한 전송이나 구독을 할 수 있고, 브로커를 통해 연결된 다른 클라이언트로 메시지를 보내거나, 서버로 메시지로 보내 일부 작업을 요청할 수 있는 PUB/SUB 메커니즘을 가능하게 한다.
- 기본적으로 In Memory Brocker를 사용하는데 몇 가지 단점이 있다.
-- 세션을 수용할 수 있는 크기 제한
-- 장애 시 메시지 유실
-- 모니터링 불편
- 이를 해결하기 위한 방법으로 RabbitMQ, ActivieMQ 등 외부 브로커를 사용할 수 있다.
'Spring' 카테고리의 다른 글
SpringBoot 3.0의 AOT (Ahead of Time Compilation) (0) | 2023.04.12 |
---|---|
[R2DBC] R2DBC란 무엇인가? (0) | 2022.07.22 |
[스프링 #7] Test (0) | 2019.03.30 |
[스프링 #6] Custom Annotation (0) | 2018.05.30 |
[스프링 #5] DispatcherServlet (0) | 2018.05.05 |