Loading...
Spring Framework Reference Documentation 7.0.2의 Order of Messages의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
broker로부터의 메시지들은 clientOutboundChannel로 publish되며, 그곳에서 WebSocket 세션으로
write됩니다. 채널은 ThreadPoolExecutor에 의해 지원되므로, 메시지들은 서로 다른 스레드에서
처리되고, client가 수신하는 최종 시퀀스는 publish의 정확한 순서와 일치하지 않을 수 있습니다.
순서가 있는 publishing을 활성화하려면, 다음과 같이 setPreservePublishOrder 플래그를 설정하십시오:
1@Configuration 2@EnableWebSocketMessageBroker 3public class PublishOrderWebSocketConfiguration implements WebSocketMessageBrokerConfigurer { 4 5 @Override 6 public void configureMessageBroker(MessageBrokerRegistry registry) { 7 // ... 8 registry.setPreservePublishOrder(true); 9 } 10 11}
1@Configuration 2@EnableWebSocketMessageBroker 3class PublishOrderWebSocketConfiguration : WebSocketMessageBrokerConfigurer { 4 5 override fun configureMessageBroker(registry: MessageBrokerRegistry) { 6 // ... 7 registry.setPreservePublishOrder(true) 8 } 9}
1<beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns:websocket="http://www.springframework.org/schema/websocket" 4 xsi:schemaLocation=" 5 http://www.springframework.org/schema/beans 6 https://www.springframework.org/schema/beans/spring-beans.xsd 7 http://www.springframework.org/schema/websocket 8 https://www.springframework.org/schema/websocket/spring-websocket.xsd"> 9 10 <websocket:message-broker preserve-publish-order="true"> 11 <!-- ... --> 12 </websocket:message-broker> 13 14</beans>
플래그가 설정되면, 동일한 client 세션 내의 메시지들은 한 번에 하나씩 clientOutboundChannel로
publish되며, 그에 따라 publish 순서가 보장됩니다. 이는 약간의 성능 오버헤드를 초래하므로,
필요한 경우에만 활성화해야 합니다.
동일한 내용은 client로부터의 메시지에도 적용되며, 이러한 메시지들은 clientInboundChannel로
send되고, 거기에서 destination prefix에 따라 처리됩니다. 채널은 ThreadPoolExecutor에 의해
지원되므로, 메시지들은 서로 다른 스레드에서 처리되고, 그에 따른 처리 시퀀스는 수신된
정확한 순서와 일치하지 않을 수 있습니다.
순서가 있는 receiving을 활성화하려면, 다음과 같이 setPreserveReceiveOrder 플래그를 설정하십시오:
1@Configuration 2@EnableWebSocketMessageBroker 3public class ReceiveOrderWebSocketConfiguration implements WebSocketMessageBrokerConfigurer { 4 5 @Override 6 public void registerStompEndpoints(StompEndpointRegistry registry) { 7 registry.setPreserveReceiveOrder(true); 8 } 9}
1@Configuration 2@EnableWebSocketMessageBroker 3class ReceiveOrderWebSocketConfiguration : WebSocketMessageBrokerConfigurer { 4 5 override fun registerStompEndpoints(registry: StompEndpointRegistry) { 6 registry.setPreserveReceiveOrder(true) 7 } 8}
User Destinations
Events