[ 
https://issues.apache.org/jira/browse/AMQ-7395?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aleksander BARSZCZEWSKI updated AMQ-7395:
-----------------------------------------
    Description: 
I am connecting to ActiveMQ with STOMP over websocket. When I publish 
message(s) with JMSXGroupID the header is correctly set on message(s) (visible 
in GUI). The grouping algorithm also works correctly (messages from same group 
are directed to single consumer - I tested this). However JMSXGroupID header 
(and any other header containing group)  is not attached to message sent from 
broker to client. On the other hand any custom user-defined headers (like 
"custom-header") are correctly both set on message sent by producer and 
received by consumer.

Here is dump of raw message (using WireShark) sent form broker to client. It 
should have JMSXGroupID but it's missing.

MESSAGE
 content-length:14
 expires:0
 destination:/queue/test
 ack:ID\c449700d2a71d-41667-1580831329460-10\c2
 subscription:sub-0
 priority:4
 custom-header:XXXX2
 message-id:ID\c449700d2a71d-41667-1580831329460-3\c9\c-1\c1\c2
 persistent:true
 timestamp:1580832022431

test message 2

 

This causes issue that when consumer/subscription has activemq.prefetchSize > 1 
then it's not possible process messages from same groups on consumer side in 
correct order (assuming here that consumer "manually" ACKs each message ack: 
client-individual).

 

Example case:

MSG1: group = A

MSG2: group = A

MSG3: group = B

MSG4: group = B

 

When prefetchSize = 4 and consumer receives those 4 messages "at once" (let's 
say there is only one consumer so it receives all groups) then it's not 
possible by consumer to guess which of those messages can be processed and 
ACKed in parallel and which sequentially.

---

 

What I tracked so far is that this test 
[https://github.com/apache/activemq/blob/9abe2c6f97c92fc99c5a2ef02846f62002a671cf/activemq-stomp/src/test/java/org/apache/activemq/transport/stomp/Stomp11Test.java#L703]
 does not operate on what ActiveMQ sent over STOMP - instead it uses JMS 
Consumer to test how message is delivered.

 

  was:
I am connecting to ActiveMQ with STOMP over websocket. When I publish 
message(s) with JMSXGroupID the header is correctly set on message(s) (visible 
in GUI). The grouping algorithm also works correctly (messages from same group 
are directed to single consumer - I tested this). However JMSXGroupID header 
(and any other header containing group)  is not attached to message sent from 
broker to client. On the other hand any custom user-defined headers (like 
"custom-header") are correctly both set on message sent by producer and 
received by consumer.

Here is dump of raw message (using WireShark) sent form broker to client. It 
should have JMSXGroupID but it's missing.


MESSAGE
content-length:14
expires:0
destination:/queue/test
ack:ID\c449700d2a71d-41667-1580831329460-10\c2
subscription:sub-0
priority:4
custom-header:XXXX2
message-id:ID\c449700d2a71d-41667-1580831329460-3\c9\c-1\c1\c2
persistent:true
timestamp:1580832022431

test message 2

 

This causes issue that when consumer/subscription has activemq.prefetchSize > 1 
then it's not possible process messages from same groups on consumer side in 
correct order (assuming here that consumer "manually" ACKs each message ack: 
client-individual).

 

Example case:

MSG1: group = A

MSG2: group = A

MSG3: group = B

MSG4: group = B

 

When prefetchSize = 4 and consumer receives those 4 messages "at once" (let's 
say there is only one consumer so it receives all groups) then it's not 
possible by consumer to guess which of those messages can be processed and 
ACKed in parallel and which sequentially.

 


> JMSXGroupID header is not attached to message sent to STOMP/ws client.
> ----------------------------------------------------------------------
>
>                 Key: AMQ-7395
>                 URL: https://issues.apache.org/jira/browse/AMQ-7395
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: AMQP, STOMP
>    Affects Versions: 5.15.6, 5.15.9
>         Environment: MacOS + Docker:
> docker run -p 61616:61616 -p 61614:61614 -p 8161:8161 -it -v 
> conf:/opt/activemq/conf -v data:/opt/activemq/data rmohr/activemq
>  
> Tested with Node.js [https://www.npmjs.com/package/@stomp/stompjs] stompjs 
> client and with WireShark to debug raw messages sent from broker to client.
>            Reporter: Aleksander BARSZCZEWSKI
>            Priority: Minor
>
> I am connecting to ActiveMQ with STOMP over websocket. When I publish 
> message(s) with JMSXGroupID the header is correctly set on message(s) 
> (visible in GUI). The grouping algorithm also works correctly (messages from 
> same group are directed to single consumer - I tested this). However 
> JMSXGroupID header (and any other header containing group)  is not attached 
> to message sent from broker to client. On the other hand any custom 
> user-defined headers (like "custom-header") are correctly both set on message 
> sent by producer and received by consumer.
> Here is dump of raw message (using WireShark) sent form broker to client. It 
> should have JMSXGroupID but it's missing.
> MESSAGE
>  content-length:14
>  expires:0
>  destination:/queue/test
>  ack:ID\c449700d2a71d-41667-1580831329460-10\c2
>  subscription:sub-0
>  priority:4
>  custom-header:XXXX2
>  message-id:ID\c449700d2a71d-41667-1580831329460-3\c9\c-1\c1\c2
>  persistent:true
>  timestamp:1580832022431
> test message 2
>  
> This causes issue that when consumer/subscription has activemq.prefetchSize > 
> 1 then it's not possible process messages from same groups on consumer side 
> in correct order (assuming here that consumer "manually" ACKs each message 
> ack: client-individual).
>  
> Example case:
> MSG1: group = A
> MSG2: group = A
> MSG3: group = B
> MSG4: group = B
>  
> When prefetchSize = 4 and consumer receives those 4 messages "at once" (let's 
> say there is only one consumer so it receives all groups) then it's not 
> possible by consumer to guess which of those messages can be processed and 
> ACKed in parallel and which sequentially.
> ---
>  
> What I tracked so far is that this test 
> [https://github.com/apache/activemq/blob/9abe2c6f97c92fc99c5a2ef02846f62002a671cf/activemq-stomp/src/test/java/org/apache/activemq/transport/stomp/Stomp11Test.java#L703]
>  does not operate on what ActiveMQ sent over STOMP - instead it uses JMS 
> Consumer to test how message is delivered.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to