STOMP 정의
STOMP(Simple Text Oriented Messaging Protocol)는 텍스트 기반의 메시징 프로토콜로, WebSocket 위에서 동작하는 Pub/Sub(발행/구독) 모델을 지원하는 프로토콜입니다.
WebSocket이 양방향 통신을 위한 저수준 프로토콜이라면, STOMP는 메시지 브로커를 활용한 고수준 프로토콜로서 메시징을 보다 쉽게 관리할 수 있도록 도와줍니다.
특징
- 프레임 기반 메시징
- CONNECT, SEND, SUBSCRIBE, DISCONNECT 등의 프레임을 사용
- 텍스트 기반 프로토콜
- HTTP처럼 텍스트로 메시지를 주고받기 때문에 디버깅이 쉬움
- Pub/Sub 모델
- 클라이언트는 특정 토픽(채널)을 구독하고, 다른 클라이언트가 메시지를 발행하면 자동으로 전달됨
- 메시지 브로커 지원
- STOMP는 RabbitMQ, ActiveMQ, Apache Kafka 같은 메시지 브로커와 연동 가능
메시지 프레임 구조
1. CONNECT
STOMP 서버에 연결 요청
[예시]
CONNECT
login:user
passcode:1234
^@
2. SEND
특정 대상(토픽 또는 큐)에 메시지 전송
[예시]
SEND
destination:/topic/chat
Hello World!^@
3. SUBSCRIBE
특정 토픽을 구독
[예시]
SUBSCRIBE
destination:/topic/chat
id:sub-1
^@
4. MESSAGE
서버가 클라이언트에 메시지 전송
[예시]
MESSAGE
destination:/topic/chat
Hello!^@
5. DISCONNECT
연결 해제
[예시]
DISCONNECT
receipt:77
^@