[ 
https://issues.apache.org/jira/browse/ARTEMIS-234?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15374477#comment-15374477
 ] 

Michael Justin commented on ARTEMIS-234:
----------------------------------------

This is a solution for clients who connect with STOMP 1.2. My test used STOMP 
1.0, which is not specified to have a content-type header. 

Apache ActiveMQ with STOMP 1.0 uses the logic of adding the content-length 
header for binary payloads. Without this logic, plain STOMP 1.0 clients would 
not be able to know if a message is binary data or text.

If you check my example, you will see that the content-type header is missing 
when the client connects with STOMP 1.0. 

So either the (STOMP 1.1/1.2) content-type header should always be present in 
STOMP 1.0 messages, or the content-length should only be present in binary 
messages.

> STOMP text message frames must not have a content-length header
> ---------------------------------------------------------------
>
>                 Key: ARTEMIS-234
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-234
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: Stomp
>    Affects Versions: 1.1.0
>         Environment: Windows 8, Java 8
>            Reporter: Michael Justin
>
> In Artemis 1.0.0, distinction between text and binary message was possible 
> based on the content-length header as documented: "A Stomp client can check 
> the presence of the content-length header to determine the type of the 
> message body (String or bytes)."
> With Artemis 1.1.0 the MESSAGE frame always includes the content-length 
> header, so that the distiction is not possible:
> SEND
> destination:jms.queue.ExampleQueue
> Test message
> received:
> MESSAGE
> subscription:{B806BF9D-B761-419C-8645-BBE3AED5CAF8}
> message-id:2147488964
> destination:jms.queue.ExampleQueue
> expires:0
> redelivered:false
> priority:4
> timestamp:1443278118819
> content-length:12
> Test message
> Additional information: the documented behaviour is also implemented in 
> Apache ActiveMQ: 
> "Stomp is a very simple protocol - that's part of the beauty of it! As such, 
> it does not have knowledge of JMS messages such as TextMessages or 
> BytesMessages. The protocol does however support a content-length header. To 
> provide more robust interaction between Stomp and JMS clients, ActiveMQ keys 
> off of the inclusion of this header to determine what message type to create 
> when sending from Stomp to JMS."
> Fixing this issue would increase the compatibility of Artemis with ActiveMQ



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to