Skip to content

Commit

Permalink
"Order of messages" in STOMP section of reference docs
Browse files Browse the repository at this point in the history
Issue: SPR-13989
  • Loading branch information
rstoyanchev committed Jul 24, 2018
1 parent 0c44b52 commit dc066b0
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions src/docs/asciidoc/web/websocket.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -1880,6 +1880,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"]
----
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:websocket="http://www.springframework.org/schema/websocket"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/websocket
http://www.springframework.org/schema/websocket/spring-websocket.xsd">
<websocket:message-broker preserve-publish-order="true">
<!-- ... -->
</websocket:message-broker>
</beans>
----

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

Expand Down

0 comments on commit dc066b0

Please sign in to comment.