Spring

STOMP에 대한 이해

zamezzz 2022. 3. 14. 18:42


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

참고 : http://stomp.github.io/

 

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