[jboss-jira] [JBoss JIRA] (WFLY-6349) JMSXGroupId has no effect on JMSProducer
Harald Wellmann (JIRA)
issues at jboss.org
Wed Mar 30 09:33:00 EDT 2016
[ https://issues.jboss.org/browse/WFLY-6349?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13183906#comment-13183906 ]
Harald Wellmann commented on WFLY-6349:
---------------------------------------
Thanks for this example - it turns out we're not quite looking at the same problem.
Your example also sets {{JMSXGroupSeq}} in addition to {{JMSXGroupId}}. I didn't set the former, in fact I wasn't aware of it, since it is not mentioned in https://activemq.apache.org/artemis/docs/1.1.0/message-grouping.html, nor in the latest HornetQ manual.
In your example, if you replace
{code}
producer.setProperty("JMSXGroupSeq", i).send(destination, text);
{code}
by
{code}
producer.send(destination, text);
{code}
you will also see the messages being received in random order. (Tried on a local build of 10.1.0-SNAPSHOT.)
But if you set the properties on the messages, not on the producer, the sequential order will be restored:
{code}
String text = "This is message " + (i + 1);
TextMessage textMessage = context.createTextMessage(text);
textMessage.setStringProperty("JMSXGroupID", "sequential");
textMessage.setStringProperty("foo", "bar");
producer.send(destination, textMessage); // textMessage, not text!
{code}
So maybe if this behaviour is coincidental, and if the basic rule is that JMSXGroupID should never be used without JMSGroupSeq, then at least the docs should be updated.
> JMSXGroupId has no effect on JMSProducer
> ----------------------------------------
>
> Key: WFLY-6349
> URL: https://issues.jboss.org/browse/WFLY-6349
> Project: WildFly
> Issue Type: Bug
> Components: JMS
> Affects Versions: 10.0.0.Final
> Reporter: Harald Wellmann
> Assignee: Jeff Mesnil
> Fix For: 10.1.0.Final
>
>
> h3. Scenario
> I'm setting the {{JMSXGroupID}} on a {{JMSProducer}} to achieve message delivery in the correct order. The consumer is a message-driven bean.
> {code}
> JMSProducer producer = context.createProducer();
> producer = producer.setProperty("JMSXGroupID", "sequential");
> producer = producer.setProperty("foo", "bar");
> for (int i = 0; i < 50; i++) {
> msgNumber++;
> String text = "This is message " + msgNumber;
> producer.send(queue, text);
> }
> {code}
> h3. Expected Behaviour
> The messages are received in the correct order, the properties {{JMSXGroupID}} and {{foo}} are set on the receiver side.
> h3. Actual Behaviour
> The messages are received in random order. Property {{foo}} is set, but property {{JMSXGroupID}} is null on the receiver side.
> h3. Workaround
> Create a {{TextMessage}} and set the properties on the message, not on the producer.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
More information about the jboss-jira
mailing list