You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2013/05/17 01:03:18 UTC
svn commit: r1483600 - in /activemq/trunk:
activemq-broker/src/main/java/org/apache/activemq/broker/jmx/
activemq-client/src/main/java/org/apache/activemq/command/
activemq-client/src/main/java/org/apache/activemq/filter/
activemq-unit-tests/src/test/j...
Author: gtully
Date: Thu May 16 23:03:17 2013
New Revision: 1483600
URL: http://svn.apache.org/r1483600
Log:
https://issues.apache.org/jira/browse/AMQ-4539 - add JMSActiveMQBrokerPath string property and brokerPath attribute via jmx message view, the list length is the current number of network hops
Modified:
activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/CompositeDataConstants.java
activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/OpenTypeSupport.java
activemq/trunk/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMessage.java
activemq/trunk/activemq-client/src/main/java/org/apache/activemq/filter/PropertyExpression.java
activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java
Modified: activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/CompositeDataConstants.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/CompositeDataConstants.java?rev=1483600&r1=1483599&r2=1483600&view=diff
==============================================================================
--- activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/CompositeDataConstants.java (original)
+++ activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/CompositeDataConstants.java Thu May 16 23:03:17 2013
@@ -24,6 +24,7 @@ public interface CompositeDataConstants
String PROPERTIES = "PropertiesText";
String JMSXGROUP_SEQ = "JMSXGroupSeq";
String JMSXGROUP_ID = "JMSXGroupID";
+ String BROKER_PATH = "BrokerPath";
String BODY_LENGTH = "BodyLength";
String BODY_PREVIEW = "BodyPreview";
String CONTENT_MAP = "ContentMap";
Modified: activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/OpenTypeSupport.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/OpenTypeSupport.java?rev=1483600&r1=1483599&r2=1483600&view=diff
==============================================================================
--- activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/OpenTypeSupport.java (original)
+++ activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/OpenTypeSupport.java Thu May 16 23:03:17 2013
@@ -40,6 +40,7 @@ import javax.management.openmbean.Tabula
import javax.management.openmbean.TabularType;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -129,6 +130,7 @@ public final class OpenTypeSupport {
addItem("JMSTimestamp", "JMSTimestamp", SimpleType.DATE);
addItem(CompositeDataConstants.JMSXGROUP_ID, "Message Group ID", SimpleType.STRING);
addItem(CompositeDataConstants.JMSXGROUP_SEQ, "Message Group Sequence Number", SimpleType.INTEGER);
+ addItem(CompositeDataConstants.BROKER_PATH, "Brokers traversed", SimpleType.STRING);
addItem(CompositeDataConstants.ORIGINAL_DESTINATION, "Original Destination Before Senting To DLQ", SimpleType.STRING);
addItem(CompositeDataConstants.PROPERTIES, "User Properties Text", SimpleType.STRING);
@@ -168,6 +170,7 @@ public final class OpenTypeSupport {
rc.put("JMSTimestamp", new Date(m.getJMSTimestamp()));
rc.put(CompositeDataConstants.JMSXGROUP_ID, m.getGroupID());
rc.put(CompositeDataConstants.JMSXGROUP_SEQ, m.getGroupSequence());
+ rc.put(CompositeDataConstants.BROKER_PATH, Arrays.toString(m.getBrokerPath()));
rc.put(CompositeDataConstants.ORIGINAL_DESTINATION, toString(m.getOriginalDestination()));
try {
rc.put(CompositeDataConstants.PROPERTIES, "" + m.getProperties());
Modified: activemq/trunk/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMessage.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMessage.java?rev=1483600&r1=1483599&r2=1483600&view=diff
==============================================================================
--- activemq/trunk/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMessage.java (original)
+++ activemq/trunk/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMessage.java Thu May 16 23:03:17 2013
@@ -46,6 +46,8 @@ import org.apache.activemq.util.TypeConv
public class ActiveMQMessage extends Message implements org.apache.activemq.Message, ScheduledMessage {
public static final byte DATA_STRUCTURE_TYPE = CommandTypes.ACTIVEMQ_MESSAGE;
public static final String DLQ_DELIVERY_FAILURE_CAUSE_PROPERTY = "dlqDeliveryFailureCause";
+ public static final String BROKER_PATH_PROPERTY = "JMSActiveMQBrokerPath";
+
private static final Map<String, PropertySetter> JMS_PROPERTY_SETERS = new HashMap<String, PropertySetter>();
protected transient Callback acknowledgeCallback;
Modified: activemq/trunk/activemq-client/src/main/java/org/apache/activemq/filter/PropertyExpression.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-client/src/main/java/org/apache/activemq/filter/PropertyExpression.java?rev=1483600&r1=1483599&r2=1483600&view=diff
==============================================================================
--- activemq/trunk/activemq-client/src/main/java/org/apache/activemq/filter/PropertyExpression.java (original)
+++ activemq/trunk/activemq-client/src/main/java/org/apache/activemq/filter/PropertyExpression.java Thu May 16 23:03:17 2013
@@ -18,6 +18,7 @@
package org.apache.activemq.filter;
import java.io.IOException;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@@ -159,6 +160,12 @@ public class PropertyExpression implemen
return Long.valueOf(message.getBrokerOutTime());
}
});
+ JMS_PROPERTY_EXPRESSIONS.put("JMSActiveMQBrokerPath", new SubExpression() {
+
+ public Object evaluate(Message message) {
+ return Arrays.toString(message.getBrokerPath());
+ }
+ });
}
private final String name;
Modified: activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java?rev=1483600&r1=1483599&r2=1483600&view=diff
==============================================================================
--- activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java (original)
+++ activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/network/BrokerNetworkWithStuckMessagesTest.java Thu May 16 23:03:17 2013
@@ -41,6 +41,7 @@ import javax.jms.QueueBrowser;
import javax.jms.Session;
import javax.management.ObjectName;
+import javax.management.openmbean.CompositeData;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.broker.BrokerService;
import org.apache.activemq.broker.BrokerTestSupport;
@@ -51,6 +52,7 @@ import org.apache.activemq.broker.jmx.Qu
import org.apache.activemq.broker.region.policy.PolicyEntry;
import org.apache.activemq.broker.region.policy.PolicyMap;
import org.apache.activemq.command.ActiveMQDestination;
+import org.apache.activemq.command.ActiveMQMessage;
import org.apache.activemq.command.ActiveMQTextMessage;
import org.apache.activemq.command.ConnectionId;
import org.apache.activemq.command.ConnectionInfo;
@@ -223,6 +225,8 @@ public class BrokerNetworkWithStuckMessa
assertNotNull(message1);
LOG.info("on remote, got: " + message1.getMessageId());
connection2.send(createAck(consumerInfo2, message1, 1, MessageAck.INDIVIDUAL_ACK_TYPE));
+ assertTrue("JMSActiveMQBrokerPath property present and correct",
+ ((ActiveMQMessage)message1).getStringProperty(ActiveMQMessage.BROKER_PATH_PROPERTY).contains(localBroker.getBroker().getBrokerId().toString()));
}
// Ensure that there are zero messages on the local broker. This tells
@@ -273,7 +277,10 @@ public class BrokerNetworkWithStuckMessa
messages = browseQueueWithJmx(remoteBroker);
assertEquals(5, messages.length);
- LOG.info("Messages now stuck on remote");
+ assertTrue("can see broker path property",
+ ((String)((CompositeData)messages[1]).get("BrokerPath")).contains(localBroker.getBroker().getBrokerId().toString()));
+
+ LOG.info("Messages now stuck on remote");
// receive again on the origin broker
ConsumerInfo consumerInfo1 = createConsumerInfo(sessionInfo1, destinationInfo1);