Loading...
Spring Framework Reference Documentation 7.0.2의 Events의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
여러 ApplicationContext 이벤트가 publish되며, Spring의 ApplicationListener 인터페이스를 구현함으로써 수신할 수 있습니다:
BrokerAvailabilityEvent: 브로커가 사용 가능해지거나 사용 불가능해질 때를 나타냅니다.
“simple” 브로커는 startup 시 즉시 사용 가능해지고 애플리케이션이 실행되는 동안 그렇게 유지되지만,
STOMP “broker relay”는 full featured 브로커에 대한 연결을 잃을 수 있습니다(예를 들어 브로커가 재시작되는 경우).
broker relay에는 reconnect 로직이 있으며 브로커가 다시 돌아오면 브로커에 대한 “system” 커넥션을 재설정합니다.
그 결과, 이 이벤트는 상태가 connected에서 disconnected로, 또는 그 반대로 변경될 때마다 publish됩니다.
SimpMessagingTemplate을 사용하는 컴포넌트는 이 이벤트를 subscribe하고 브로커가 사용 불가능한 시점에는
메시지를 보내지 않도록 해야 합니다. 어떤 경우든, 메시지를 보낼 때 MessageDeliveryException을 처리할 준비가 되어 있어야 합니다.
SessionConnectEvent: 새로운 STOMP CONNECT가 수신될 때 publish되어
새로운 클라이언트 세션의 시작을 나타냅니다. 이 이벤트는 세션 ID, user 정보(있는 경우),
그리고 클라이언트가 보낸 custom 헤더를 포함하여 connect를 나타내는 메시지를 포함합니다.
이는 클라이언트 세션을 추적하는 데 유용합니다. 이 이벤트를 subscribe한 컴포넌트는
포함된 메시지를 SimpMessageHeaderAccessor 또는 StompMessageHeaderAccessor로 wrapping할 수 있습니다.
SessionConnectedEvent: 브로커가 CONNECT에 응답하여 STOMP CONNECTED 프레임을 보낸 직후,
SessionConnectEvent 이후에 publish됩니다. 이 시점에서 STOMP 세션은 완전히 설정된 것으로 간주할 수 있습니다.
SessionSubscribeEvent: 새로운 STOMP SUBSCRIBE가 수신될 때 publish됩니다.
SessionUnsubscribeEvent: 새로운 STOMP UNSUBSCRIBE가 수신될 때 publish됩니다.
SessionDisconnectEvent: STOMP 세션이 종료될 때 publish됩니다. DISCONNECT는
클라이언트에서 전송되었을 수도 있고 WebSocket 세션이 close될 때 자동으로 생성되었을 수도 있습니다.
일부 경우에는 이 이벤트가 세션당 한 번 이상 publish됩니다. 컴포넌트는 여러 disconnect 이벤트에 대해 멱등해야 합니다.
full-featured 브로커를 사용할 때, STOMP “broker relay”는 브로커가 일시적으로 사용 불가능해지면 “system” 커넥션을 자동으로 reconnect합니다. 그러나 클라이언트 커넥션은 자동으로 reconnect되지 않습니다. heartbeat가 활성화되어 있다고 가정하면, 클라이언트는 일반적으로 10초 이내에 브로커가 응답하지 않는다는 것을 알아차립니다. 클라이언트는 자체 reconnecting 로직을 구현해야 합니다.
Order of Messages
Interception