DEV BLOG

[Messaging Protocol] STOMP

|

STOMP이란

  • http://stomp.github.io
  • 간단한 텍스트기반 메시지 프로토콜이다
  • Simple (or Streaming) Text Oriented Message Protocol의 약자
  • 프레임 기반 프로토콜
  • 지원하는 명령어(command)
    • CONNECT
    • SEND
    • UBSCRIBE
    • UNSUBSCRIBE
    • BEGIN
    • COMMIT
    • ABORT
    • ACK
    • NACK
    • DISCONNECT

프레임이란

클라이언트와 서버 간의 통신은 여러 줄로 구성된 “프레임”을 통해 이루어진다 프레임의 형식은 아래와 같다 크게 3부분으로 나누어지는데 순서대로 command - header - body 이다

COMMAND
header1:value1
hedaer2:value2

Body^@

Client frame

클라이언트가 보낼 수 있는 프레임은 아래와 같다

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

SEND

클라이언트가 보낼 대상에게 메시지를 보낼 때의 프레임이다.

SEND
destination:/queue/trade
content-type:application/json
content-length:44

{"action" : "BUY"}

SUBSCRIB

  • 구독할 때 사용하는 프레임
  • 단일 연결은 서버에 대해 여러 개의 열린 구독을 가질 수 있으므로 id은 구독을 고유하게 식별하기 위한 값이다.
SUBSCRIBE
id:sub-1
destination:/topic/price.stock.*

^@

UNSUBSCRIB

  • id가 sub-1인 구독을 취소할 때 사용하는 프레임
  • 구독 취소될 경우, 더 이상 해당 destination에서 메시지를 받지 않는다.
UNSUBSCRIBE
id:sub-1

^@

Server frame

  • MESSAGE
  • RECEIPT
  • ERROR

MESSAGE

MESSAGE 프레임은 구독에서 클라이언트로 메시지를 전달하는 데 사용됩니다.

MESSAGE
message-id:nxsdfasdf
subscription:sub-1
destination:/topic/price.stock.MMM

{"ticker":"MMM"}