diff --git a/src/docs/asciidoc/web/websocket.adoc b/src/docs/asciidoc/web/websocket.adoc index 9aa20ca156..550937ae31 100644 --- a/src/docs/asciidoc/web/websocket.adoc +++ b/src/docs/asciidoc/web/websocket.adoc @@ -1915,6 +1915,60 @@ of the `message-broker` element in XML. +[[websocket-stomp-ordered-messages]] +=== Order of Messages + +Messages from the broker are published to the "clientOutboundChannel" from where they are +written to WebSocket sessions. As the channel is backed by a `ThreadPoolExecutor` messages +are processed in different threads, and the resulting sequence received by the client may +not match the exact order of publication. + +If this is an issue, enable the following flag: + +[source,java,indent=0] +[subs="verbatim,quotes"] +---- + @Configuration + @EnableWebSocketMessageBroker + public class MyConfig implements WebSocketMessageBrokerConfigurer { + + @Override + protected void configureMessageBroker(MessageBrokerRegistry registry) { + // ... + registry.setPreservePublishOrder(true); + } + + } +---- + +The same in XML: + +[source,xml,indent=0] +[subs="verbatim,quotes,attributes"] +---- + + + + + + + +---- + +When the flag is set, messages within the same client session are published to the +"clientOutboundChannel" one at a time, so that the order of publication is guaranteed. +Note that this incurs a small performance overhead, so enable it only if required. + + + + [[websocket-stomp-appplication-context-events]] === Events and Interception