웹 애플리케이션 간 양방향 통신을 지원하는 프로토콜
연결 지향
한번 연결 맺은 뒤 유지
양방향 통신
모든 환경에서 사용할 수 없음
SockJs, Socket.io 라이브러리
Simple Text Oriented Messaging Protocol
간단한 메시지를 전송하기 위한 프로토콜로 메시지 브로커를와 publisher - subscriber 방식을 사용
: 발행자가 보낸 메시지를 구독자에게 전달
STOMP는 HTTP와 비슷하게 frame 기반 프로토콜 command, header, body로 이루어져 있다.
간단한 메시지 브로커를 활성화하고, 브로커를 타겟으로 하는 목적지를 구성
<STOMP frame 구조>
COMMAND
header1:value1
header2:value2
Body^@
웹 소켓과 STOMP를 함께 사용하면 frame의 구조가 정해져있기 때문에 통신에 용이하다.
enableSimpleBroker: 브로커 활성화 + 목적지 구성 및 필터링
간단한 메시지 브로커를 활성화하고, 브로커를 타겟으로 하는 목적지를 구성
주로 "/topic"과 같은 프리픽스를 사용하여 목적지를 필터링
enableStompBrokerRelay:
STOMP 브로커 릴레이를 활성화하고, 메시지 브로커에서 지원하는 목적지 프리픽스를 구성
메시지 브로커의 STOMP 문서를 확인하여 지원하는 목적지에 대한 정보를 얻기
configureBrokerChannel:
애플리케이션에서 메시지 브로커로 메시지를 전송하는 데 사용되는 채널을 사용자 정의
기본적으로 메시지 브로커로 메시지를 보낼 때, 동기적으로 전송되므로, 이를 비동기적으로 전송하도록 채널을 구성하는 데 사용 가능
setApplicationDestinationPrefixes:
어플리케이션 어노테이션 메소드를 대상으로 하는 목적지를 필터링하기 위한 프리픽스를 구성
예를 들어, "/app"으로 시작하는 목적지는 어노테이션 메소드로 처리되고, 다른 목적지는 메시지 브로커를 대상으로 함
setUserDestinationPrefix:
사용자 목적지를 식별하는 데 사용되는 프리픽스를 구성
사용자 목적지는 사용자가 세션별로 구독할 수 있는 고유한 큐의 이름을 제공하며, 다른 사용자가 해당 고유한 큐로 메시지를 전송 가능
setPathMatcher:
메시지의 목적지를 @MessageMapping 및 @SubscribeMapping 메소드에 일치시키기 위해 사용되는 PathMatcher를 구성
기본적으로는 AntPathMatcher가 사용되며, 필요한 경우 사용자 지정 PathMatcher를 제공 가능
setCacheLimit:
브로커와 관련된 등록에 대한 캐시 제한을 구성
현재는 구독 레지스트리의 목적지 캐시에만 적용
setPreservePublishOrder:
클라이언트가 메시지를 게시 순서대로 수신해야 하는지 여부를 구성
이 플래그가 true로 설정되면 동일한 세션 내에서 메시지는 발행 순서를 유지하기 위해 하나씩 "clientOutboundChannel"로 전송