Skip to content

A single websocket message containing multiple STOMP frames #24

Open
@GregDThomas

Description

@GregDThomas

If the stilts stomp-client receives a single websocket message that contains two or more STOMP frames, then only the first of those frames is processed. This means that frames are silently lost. I've seen this against a ActiveMQ Apollo broker (simply fire two messages to a destination to which you've subscribed in quick succession; only the first will arrive) - it could no doubt occur against other brokers, too.

See also http://jmesnil.net/weblog/2012/05/15/stomp-over-websockets-with-multi-frames/

Below is an extract from the log file ...

TRACE 2014-07-14 08:59:54,513 [DebugHandler] - CLIENT_HEAD <<inbound<< [id: 0xcdde5cbd, /127.0.0.1:55694 => /127.0.0.1:8090] :: MESSAGE+BUFFER ?~�$MESSAGE
subscription:subscription-0
message-id:localhost-21
receipt:receipt-0
destination:/topic/SOME_TOPIC
content-length:17

any old content 0^@
MESSAGE
subscription:subscription-0
message-id:localhost-22
receipt:receipt-1
destination:/topic/SOME_TOPIC
content-length:17

any old content 1^@

TRACE 2014-07-14 08:59:54,514 [DebugHandler] - CLIENT_TAIL <<inbound<< [id: 0x3e06ea70, /127.0.0.1:55701 => /127.0.0.1:8090] :: [id: 0x3e06ea70, /127.0.0.1:55701 => /127.0.0.1:8090] RECEIVED: [StompControlFrame: header=[FrameHeader: command=RECEIPT; headers={receipt-id=receipt-0}]] ** class org.jboss.netty.channel.UpstreamMessageEvent
TRACE 2014-07-14 08:59:54,514 [DebugHandler] - CLIENT_TAIL <<inbound<< [id: 0x3e06ea70, /127.0.0.1:55701 => /127.0.0.1:8090] :: MESSAGE [StompControlFrame: header=[FrameHeader: command=RECEIPT; headers={receipt-id=receipt-0}]]
TRACE 2014-07-14 08:59:54,517 [DebugHandler] - CLIENT_MID <<inbound<< [id: 0xcdde5cbd, /127.0.0.1:55694 => /127.0.0.1:8090] :: [id: 0xcdde5cbd, /127.0.0.1:55694 => /127.0.0.1:8090] RECEIVED: [StompContentFrame: header=[FrameHeader: command=MESSAGE; headers={subscription=subscription-0, content-length=17, message-id=localhost-21, receipt=receipt-0, destination=/topic/SOME_TOPIC}]] ** class org.jboss.netty.channel.UpstreamMessageEvent
TRACE 2014-07-14 08:59:54,517 [DebugHandler] - CLIENT_MID <<inbound<< [id: 0xcdde5cbd, /127.0.0.1:55694 => /127.0.0.1:8090] :: MESSAGE [StompContentFrame: header=[FrameHeader: command=MESSAGE; headers={subscription=subscription-0, content-length=17, message-id=localhost-21, receipt=receipt-0, destination=/topic/SOME_TOPIC}]]
TRACE 2014-07-14 08:59:54,518 [AbstractClientControlFrameHandler] - received: [StompContentFrame: header=[FrameHeader: command=MESSAGE; headers={subscription=subscription-0, content-length=17, message-id=localhost-21, receipt=receipt-0, destination=/topic/SOME_TOPIC}]]
TRACE 2014-07-14 08:59:54,526 [DebugHandler] - CLIENT_TAIL <<inbound<< [id: 0xcdde5cbd, /127.0.0.1:55694 => /127.0.0.1:8090] :: [id: 0xcdde5cbd, /127.0.0.1:55694 => /127.0.0.1:8090] RECEIVED: [StompMessage: headers={subscription=subscription-0, content-length=17, message-id=localhost-21, receipt=receipt-0, destination=/topic/SOME_TOPIC}   content=any old content 0] ** class org.jboss.netty.channel.UpstreamMessageEvent
TRACE 2014-07-14 08:59:54,526 [DebugHandler] - CLIENT_TAIL <<inbound<< [id: 0xcdde5cbd, /127.0.0.1:55694 => /127.0.0.1:8090] :: MESSAGE [StompMessage: headers={subscription=subscription-0, content-length=17, message-id=localhost-21, receipt=receipt-0, destination=/topic/SOME_TOPIC}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions