You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ra...@apache.org on 2013/08/28 12:21:12 UTC
svn commit: r1518145 - in /activemq/trunk/activemq-broker/src:
main/java/org/apache/activemq/broker/view/
test/java/org/apache/activemq/broker/view/
Author: rajdavies
Date: Wed Aug 28 10:21:12 2013
New Revision: 1518145
URL: http://svn.apache.org/r1518145
Log:
tidied up the javadocs for MessageBrokerView and added a test case for BrokerDestinationView
Added:
activemq/trunk/activemq-broker/src/test/java/org/apache/activemq/broker/view/
activemq/trunk/activemq-broker/src/test/java/org/apache/activemq/broker/view/BrokerDestinationViewTest.java (with props)
Modified:
activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/view/BrokerDestinationView.java
activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/view/MessageBrokerView.java
Modified: activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/view/BrokerDestinationView.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/view/BrokerDestinationView.java?rev=1518145&r1=1518144&r2=1518145&view=diff
==============================================================================
--- activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/view/BrokerDestinationView.java (original)
+++ activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/view/BrokerDestinationView.java Wed Aug 28 10:21:12 2013
@@ -22,113 +22,154 @@ public class BrokerDestinationView {
private final Destination destination;
- public BrokerDestinationView(Destination destination) {
+ BrokerDestinationView(Destination destination) {
this.destination = destination;
}
-
+ /**
+ * @return the name of the DestinationView
+ */
public String getName() {
return destination.getName();
}
+ /**
+ * @return the number of messages enqueued by this destination
+ */
public long getEnqueueCount() {
return destination.getDestinationStatistics().getEnqueues().getCount();
}
+ /**
+ * @return the number of messages dequeued (dispatched and removed) by this destination
+ */
public long getDequeueCount() {
return destination.getDestinationStatistics().getDequeues().getCount();
}
-
+ /**
+ * @return the number of messages dispatched by this destination
+ */
public long getDispatchCount() {
return destination.getDestinationStatistics().getDispatched().getCount();
}
-
+ /**
+ * @return the number of messages inflight (dispatched by not acknowledged) by this destination
+ */
public long getInFlightCount() {
return destination.getDestinationStatistics().getInflight().getCount();
}
-
+ /**
+ * @return the number of messages expired by this destination
+ */
public long getExpiredCount() {
return destination.getDestinationStatistics().getExpired().getCount();
}
-
- public long getConsumerCount() {
- return destination.getDestinationStatistics().getConsumers().getCount();
- }
-
-
+ /**
+ * @return the number of active consumers on this destination
+ */
+ public int getConsumerCount() {
+ return (int)destination.getDestinationStatistics().getConsumers().getCount();
+ }
+
+ /**
+ * @return the number of active consumers on this destination
+ */
+ public int getProducerCount() {
+ return (int)destination.getDestinationStatistics().getProducers().getCount();
+ }
+
+ /**
+ * @return the depth of the Destination
+ */
public long getQueueSize() {
return destination.getDestinationStatistics().getMessages().getCount();
}
+ /**
+ * @return the number of messages cached in memory by this destination
+ */
public long getMessagesCached() {
return destination.getDestinationStatistics().getMessagesCached().getCount();
}
-
+ /**
+ * @return the memory usage as a percentage for this Destination
+ */
public int getMemoryPercentUsage() {
return destination.getMemoryUsage().getPercentUsage();
}
-
+ /**
+ * @return the memory used by this destination in bytes
+ */
public long getMemoryUsageByteCount() {
return destination.getMemoryUsage().getUsage();
}
+ /**
+ * @return the memory limit for this destination in bytes
+ */
public long getMemoryLimit() {
return destination.getMemoryUsage().getLimit();
}
- public void setMemoryLimit(long limit) {
- destination.getMemoryUsage().setLimit(limit);
- }
-
-
+ /**
+ * @return the average time it takes to store a message on this destination (ms)
+ */
public double getAverageEnqueueTime() {
return destination.getDestinationStatistics().getProcessTime().getAverageTime();
}
-
+ /**
+ * @return the maximum time it takes to store a message on this destination (ms)
+ */
public long getMaxEnqueueTime() {
return destination.getDestinationStatistics().getProcessTime().getMaxTime();
}
+ /**
+ * @return the minimum time it takes to store a message on this destination (ms)
+ */
public long getMinEnqueueTime() {
return destination.getDestinationStatistics().getProcessTime().getMinTime();
}
- public float getMemoryUsagePortion() {
- return destination.getMemoryUsage().getUsagePortion();
- }
-
- public long getProducerCount() {
- return destination.getDestinationStatistics().getProducers().getCount();
- }
-
-
+ /**
+ * @return true if the destination is a Dead Letter Queue
+ */
public boolean isDLQ() {
return destination.isDLQ();
}
+ /**
+ * @return the number of messages blocked waiting for dispatch (indication of slow consumption if greater than zero)
+ */
public long getBlockedSends() {
return destination.getDestinationStatistics().getBlockedSends().getCount();
}
+ /**
+ * @return the average time(ms) messages are blocked waiting for dispatch (indication of slow consumption if greater than zero)
+ */
public double getAverageBlockedTime() {
return destination.getDestinationStatistics().getBlockedTime().getAverageTime();
}
+ /**
+ * @return the total time(ms) messages are blocked waiting for dispatch (indication of slow consumption if greater than zero)
+ */
public long getTotalBlockedTime() {
return destination.getDestinationStatistics().getBlockedTime().getTotalTime();
Modified: activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/view/MessageBrokerView.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/view/MessageBrokerView.java?rev=1518145&r1=1518144&r2=1518145&view=diff
==============================================================================
--- activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/view/MessageBrokerView.java (original)
+++ activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/view/MessageBrokerView.java Wed Aug 28 10:21:12 2013
@@ -40,34 +40,74 @@ public class MessageBrokerView {
private final BrokerService brokerService;
private Map<ActiveMQDestination,BrokerDestinationView> destinationViewMap = new LRUCache<ActiveMQDestination, BrokerDestinationView>();
- MessageBrokerView(BrokerService brokerService){
+
+ /**
+ * Create a view of a running Broker
+ * @param brokerService
+ */
+ public MessageBrokerView(BrokerService brokerService){
this.brokerService = brokerService;
+ if (brokerService == null){
+ throw new NullPointerException("BrokerService is null");
+ }
+ if (!brokerService.isStarted()){
+ throw new IllegalStateException("BrokerService " + brokerService.getBrokerName() + " is not started");
+ }
}
+
+ /**
+ * @return the brokerName
+ */
public String getBrokerName(){
return brokerService.getBrokerName();
}
+ /**
+ * @return the unique id of the Broker
+ */
+ public String getBrokerId(){
+ try {
+ return brokerService.getBroker().getBrokerId().toString();
+ } catch (Exception e) {
+ return "";
+ }
+ }
+
+ /**
+ * @return the memory used by the Broker as a percentage
+ */
public int getMemoryPercentUsage() {
return brokerService.getSystemUsage().getMemoryUsage().getPercentUsage();
}
+ /**
+ * @return the space used by the Message Store as a percentage
+ */
public int getStorePercentUsage() {
return brokerService.getSystemUsage().getStoreUsage().getPercentUsage();
}
+ /**
+ * @return the space used by the store for temporary messages as a percentage
+ */
public int getTempPercentUsage() {
return brokerService.getSystemUsage().getTempUsage().getPercentUsage();
}
-
+ /**
+ * @return the space used by the store of scheduled messages
+ */
public int getJobSchedulerStorePercentUsage() {
return brokerService.getSystemUsage().getJobSchedulerUsage().getPercentUsage();
}
+ /**
+ * @return true if the Broker isn't using an in-memory store only for messages
+ */
public boolean isPersistent() {
return brokerService.isPersistent();
}
@@ -76,6 +116,10 @@ public class MessageBrokerView {
return brokerService;
}
+ /**
+ * Retrieve a set of all Destinations be used by the Broker
+ * @return all Destinations
+ */
public Set<ActiveMQDestination> getDestinations(){
Set<ActiveMQDestination> result;
@@ -89,6 +133,11 @@ public class MessageBrokerView {
return result;
}
+ /**
+ * Retrieve a set of all Topics be used by the Broker
+ * @return all Topics
+ */
+
public Set<ActiveMQTopic> getTopics(){
Set<ActiveMQTopic> result = new HashSet<ActiveMQTopic>();
for (ActiveMQDestination destination:getDestinations()){
@@ -99,6 +148,11 @@ public class MessageBrokerView {
return result;
}
+ /**
+ * Retrieve a set of all Queues be used by the Broker
+ * @return all Queues
+ */
+
public Set<ActiveMQQueue> getQueues(){
Set<ActiveMQQueue> result = new HashSet<ActiveMQQueue>();
for (ActiveMQDestination destination:getDestinations()){
@@ -109,6 +163,10 @@ public class MessageBrokerView {
return result;
}
+ /**
+ * Retrieve a set of all TemporaryTopics be used by the Broker
+ * @return all TemporaryTopics
+ */
public Set<ActiveMQTempTopic> getTempTopics(){
Set<ActiveMQTempTopic> result = new HashSet<ActiveMQTempTopic>();
for (ActiveMQDestination destination:getDestinations()){
@@ -119,6 +177,11 @@ public class MessageBrokerView {
return result;
}
+
+ /**
+ * Retrieve a set of all TemporaryQueues be used by the Broker
+ * @return all TemporaryQueues
+ */
public Set<ActiveMQTempQueue> getTempQueues(){
Set<ActiveMQTempQueue> result = new HashSet<ActiveMQTempQueue>();
for (ActiveMQDestination destination:getDestinations()){
@@ -135,9 +198,10 @@ public class MessageBrokerView {
* will default to a Queue
* @param destinationName
* @return the BrokerDestinationView associated with the destinationName
+ * @throws Exception
*/
- public BrokerDestinationView getDestinationView(String destinationName){
+ public BrokerDestinationView getDestinationView(String destinationName) throws Exception{
return getDestinationView(destinationName,ActiveMQDestination.QUEUE_TYPE);
}
@@ -145,9 +209,10 @@ public class MessageBrokerView {
* Get the BrokerDestinationView associated with the topic
* @param destinationName
* @return BrokerDestinationView
+ * @throws Exception
*/
- public BrokerDestinationView getTopicDestinationView(String destinationName){
+ public BrokerDestinationView getTopicDestinationView(String destinationName) throws Exception{
return getDestinationView(destinationName,ActiveMQDestination.TOPIC_TYPE);
}
@@ -155,23 +220,38 @@ public class MessageBrokerView {
* Get the BrokerDestinationView associated with the queue
* @param destinationName
* @return BrokerDestinationView
+ * @throws Exception
*/
- public BrokerDestinationView getQueueDestinationView(String destinationName){
+ public BrokerDestinationView getQueueDestinationView(String destinationName) throws Exception{
return getDestinationView(destinationName,ActiveMQDestination.QUEUE_TYPE);
}
- public BrokerDestinationView getDestinationView (String destinationName, byte type) {
+
+ /**
+ * Get the BrokerDestinationView associated with destination
+ * @param destinationName
+ * @param type expects either ActiveMQDestination.QUEUE_TYPE, ActiveMQDestination.TOPIC_TYPE etc
+ * @return BrokerDestinationView
+ * @throws Exception
+ */
+ public BrokerDestinationView getDestinationView (String destinationName, byte type) throws Exception {
ActiveMQDestination activeMQDestination = ActiveMQDestination.createDestination(destinationName,type);
return getDestinationView(activeMQDestination);
}
- public BrokerDestinationView getDestinationView (ActiveMQDestination activeMQDestination) {
+ /**
+ * Get the BrokerDestinationView associated with destination
+ * @param activeMQDestination
+ * @return BrokerDestinationView
+ * @throws Exception
+ */
+ public BrokerDestinationView getDestinationView (ActiveMQDestination activeMQDestination) throws Exception {
BrokerDestinationView view = null;
synchronized(destinationViewMap){
view = destinationViewMap.get(activeMQDestination);
if (view==null){
- try {
+
/**
* If auto destinatons are allowed (on by default) - this will create a Broker Destination
* if it doesn't exist. We could query the regionBroker first to check - but this affords more
@@ -179,12 +259,9 @@ public class MessageBrokerView {
* messaging clients have started (and hence created the destination themselves
*/
Destination destination = brokerService.getDestination(activeMQDestination);
- BrokerDestinationView brokerDestinationView = new BrokerDestinationView(destination);
- destinationViewMap.put(activeMQDestination,brokerDestinationView);
- } catch (Exception e) {
- LOG.warn("Failed to get Destination for " + activeMQDestination,e);
- }
- destinationViewMap.put(activeMQDestination,view);
+ view = new BrokerDestinationView(destination);
+ destinationViewMap.put(activeMQDestination,view);
+
}
}
return view;
Added: activemq/trunk/activemq-broker/src/test/java/org/apache/activemq/broker/view/BrokerDestinationViewTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-broker/src/test/java/org/apache/activemq/broker/view/BrokerDestinationViewTest.java?rev=1518145&view=auto
==============================================================================
--- activemq/trunk/activemq-broker/src/test/java/org/apache/activemq/broker/view/BrokerDestinationViewTest.java (added)
+++ activemq/trunk/activemq-broker/src/test/java/org/apache/activemq/broker/view/BrokerDestinationViewTest.java Wed Aug 28 10:21:12 2013
@@ -0,0 +1,84 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.view;
+
+import javax.jms.Connection;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.broker.BrokerRegistry;
+import org.apache.activemq.broker.BrokerService;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+
+public class BrokerDestinationViewTest {
+
+ protected BrokerService brokerService;
+ protected ActiveMQConnectionFactory factory;
+ protected Connection producerConnection;
+
+ protected Session producerSession;
+ protected MessageConsumer consumer;
+ protected MessageProducer producer;
+ protected Queue queue;
+ protected int messageCount = 10000;
+ protected int timeOutInSeconds = 10;
+
+
+
+ @Before
+ public void setUp() throws Exception {
+ brokerService = new BrokerService();
+ brokerService.setPersistent(false);
+ brokerService.start();
+
+ factory = new ActiveMQConnectionFactory(BrokerRegistry.getInstance().findFirst().getVmConnectorURI());
+ producerConnection = factory.createConnection();
+ producerConnection.start();
+ producerSession = producerConnection.createSession(false,Session.AUTO_ACKNOWLEDGE);
+ queue = producerSession.createQueue(getClass().getName());
+ producer = producerSession.createProducer(queue);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ if (producerConnection != null){
+ producerConnection.close();
+ }
+ if (brokerService != null) {
+ brokerService.stop();
+ }
+ }
+
+ @Test
+ public void testBrokerDestinationView() throws Exception {
+ for (int i = 0; i < messageCount; i++){
+ Message message = producerSession.createTextMessage("test " + i);
+ producer.send(message);
+
+ }
+ MessageBrokerView messageBrokerView = MessageBrokerViewRegistry.getInstance().lookup("");
+ BrokerDestinationView destinationView = messageBrokerView.getQueueDestinationView(getClass().getName());
+ assertEquals(destinationView.getQueueSize(),messageCount);
+
+ }
+}
Propchange: activemq/trunk/activemq-broker/src/test/java/org/apache/activemq/broker/view/BrokerDestinationViewTest.java
------------------------------------------------------------------------------
svn:eol-style = native