You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2016/04/04 18:05:59 UTC
[2/2] activemq-artemis git commit: ARTEMIS-462 JMSXGroupID on JMS 2
producer
ARTEMIS-462 JMSXGroupID on JMS 2 producer
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/69a97c36
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/69a97c36
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/69a97c36
Branch: refs/heads/master
Commit: 69a97c3678b0b3f061736285bb73c96385d6a2eb
Parents: d476ca1
Author: jbertram <jb...@apache.org>
Authored: Wed Mar 30 16:23:38 2016 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Mon Apr 4 12:05:39 2016 -0400
----------------------------------------------------------------------
.../artemis/jms/client/ActiveMQMessage.java | 20 +++++++-
.../integration/jms/client/GroupingTest.java | 53 ++++++++++++++++++++
2 files changed, 71 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/69a97c36/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java
index eee6327..7b2ee5b 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java
@@ -656,8 +656,8 @@ public class ActiveMQMessage implements javax.jms.Message {
public void setStringProperty(final String name, final String value) throws JMSException {
checkProperty(name);
- if (MessageUtil.JMSXGROUPID.equals(name)) {
- message.putStringProperty(org.apache.activemq.artemis.api.core.Message.HDR_GROUP_ID, SimpleString.toSimpleString(value));
+ if (handleGroupID(name, value)) {
+ return;
}
else {
message.putStringProperty(new SimpleString(name), SimpleString.toSimpleString(value));
@@ -666,6 +666,10 @@ public class ActiveMQMessage implements javax.jms.Message {
@Override
public void setObjectProperty(final String name, final Object value) throws JMSException {
+ if (handleGroupID(name, value)) {
+ return;
+ }
+
if (ActiveMQJMSConstants.JMS_ACTIVEMQ_OUTPUT_STREAM.equals(name)) {
setOutputStream((OutputStream) value);
@@ -950,5 +954,17 @@ public class ActiveMQMessage implements javax.jms.Message {
}
}
+ private boolean handleGroupID(final String name, final Object value) {
+ boolean result = false;
+
+ if (MessageUtil.JMSXGROUPID.equals(name)) {
+ message.putStringProperty(org.apache.activemq.artemis.api.core.Message.HDR_GROUP_ID, SimpleString.toSimpleString(value.toString()));
+
+ result = true;
+ }
+
+ return result;
+ }
+
// Inner classes -------------------------------------------------
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/69a97c36/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/GroupingTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/GroupingTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/GroupingTest.java
index 10e6b95..a73e3e5 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/GroupingTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/GroupingTest.java
@@ -29,13 +29,17 @@ import org.junit.Test;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
+import javax.jms.JMSConsumer;
+import javax.jms.JMSContext;
import javax.jms.JMSException;
+import javax.jms.JMSProducer;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
+import java.util.UUID;
/**
* GroupingTest
@@ -114,6 +118,55 @@ public class GroupingTest extends JMSTestBase {
}
@Test
+ public void testGroupingWithJMS2Producer() throws Exception {
+ final String groupID = UUID.randomUUID().toString();
+ JMSContext ctx = addContext(getCF().createContext(JMSContext.SESSION_TRANSACTED));
+
+ JMSProducer producer = ctx.createProducer().setProperty("JMSXGroupID", groupID);
+
+ JMSConsumer consumer1 = ctx.createConsumer(queue);
+ JMSConsumer consumer2 = ctx.createConsumer(queue);
+ JMSConsumer consumer3 = ctx.createConsumer(queue);
+
+ ctx.start();
+
+ for (int j = 0; j < 100; j++) {
+ TextMessage message = ctx.createTextMessage("Message" + j);
+
+ producer.send(queue, message);
+
+ String prop = message.getStringProperty("JMSXGroupID");
+
+ assertNotNull(prop);
+ assertEquals(groupID, prop);
+ }
+
+ ctx.commit();
+
+ //All msgs should go to the first consumer
+ for (int j = 0; j < 100; j++) {
+ TextMessage tm = (TextMessage) consumer1.receive(10000);
+
+ assertNotNull(tm);
+
+ tm.acknowledge();
+
+ assertEquals("Message" + j, tm.getText());
+
+ assertEquals(tm.getStringProperty("JMSXGroupID"), groupID);
+
+ tm = (TextMessage) consumer2.receiveNoWait();
+ assertNull(tm);
+ tm = (TextMessage) consumer3.receiveNoWait();
+ assertNull(tm);
+ }
+
+ ctx.commit();
+
+ ctx.close();
+ }
+
+ @Test
public void testManyGroups() throws Exception {
ConnectionFactory fact = getCF();
Assume.assumeFalse("only makes sense withOUT auto-group", ((ActiveMQConnectionFactory) fact).isAutoGroup());