Skip to content

Preserve order of broker messages [SPR-13989] #18562

@spring-projects-issues

Description

@spring-projects-issues

Pieter opened SPR-13989 and commented

M1 is a large message and M2 is a small message.
M2 is sent immediately after M1.
=> M2 is received before M1 although the messageId of M1 is smaller than the messageId of M2

I enabled tracing for 'org.springframework.web.socket':
clientOutboundChannel-90 processes M1
clientOutboundChannel-91 processes M2

10:43:01 [clientOutboundChannel-91] WebSocketServerSockJsSession - Cancelling heartbeat in session qdivbsu4
10:43:01 [clientOutboundChannel-91] WebSocketServerSockJsSession - Preparing to write SockJsFrame content='a["MESSAGE\ndestination:/user/queue/reply-1d07e5d5-91f1-4617-9f8e-477041972ad5\n...(truncated)'
10:43:01 [clientOutboundChannel-91] WebSocketServerSockJsSession - Writing SockJsFrame content='a["MESSAGE\ndestination:/user/queue/reply-1d07e5d5-91f1-4617-9f8e-477041972ad5\n...(truncated)'
10:43:01 [clientOutboundChannel-91] NativeWebSocketSession - Sending TextMessage payload=[a["MESSAGE..], byteCount=14989, last=true], JettyWebSocketSession[id=6baad94d, uri=ws://localhost:8080/weaver/ep/307/qdivbsu4/websocket]
10:43:01 [clientOutboundChannel-91] WebSocketServerSockJsSession - Scheduled heartbeat in session qdivbsu4
10:43:01 [clientOutboundChannel-90] WebSocketServerSockJsSession - Cancelling heartbeat in session qdivbsu4
10:43:01 [clientOutboundChannel-90] WebSocketServerSockJsSession - Preparing to write SockJsFrame content='a["MESSAGE\ndestination:/user/queue/reply-1d07e5d5-91f1-4617-9f8e-477041972ad5\n...(truncated)'
10:43:01 [clientOutboundChannel-90] WebSocketServerSockJsSession - Writing SockJsFrame content='a["MESSAGE\ndestination:/user/queue/reply-1d07e5d5-91f1-4617-9f8e-477041972ad5\n...(truncated)'
10:43:01 [clientOutboundChannel-90] NativeWebSocketSession - Sending TextMessage payload=[a["MESSAGE..], byteCount=4556671, last=true], JettyWebSocketSession[id=6baad94d, uri=ws://localhost:8080/weaver/ep/307/qdivbsu4/websocket]
10:43:01 [clientOutboundChannel-90] WebSocketServerSockJsSession - Scheduled heartbeat in session qdivbsu4

I suspect that because the conversion of the payload of the smaller message is so fast that it passes the conversion of the larger payload and hence is sent before the larger message.


Affects: 4.2.5

Issue Links:

1 votes, 5 watchers

Metadata

Metadata

Assignees

Labels

in: webIssues in web modules (web, webmvc, webflux, websocket)type: enhancementA general enhancement

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions