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 2008/05/29 08:41:36 UTC

svn commit: r661224 - in /activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker: jmx/ region/cursors/

Author: rajdavies
Date: Wed May 28 23:41:35 2008
New Revision: 661224

URL: http://svn.apache.org/viewvc?rev=661224&view=rev
Log:
Fix for https://issues.apache.org/activemq/browse/AMQ-1755

Modified:
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DurableSubscriptionView.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DurableSubscriptionViewMBean.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/InactiveDurableSubscriptionView.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/QueueView.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/QueueViewMBean.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/cursors/PendingMessageCursor.java

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java?rev=661224&r1=661223&r2=661224&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java Wed May 28 23:41:35 2008
@@ -37,6 +37,7 @@
 import org.apache.activemq.ActiveMQConnectionFactory;
 import org.apache.activemq.broker.jmx.OpenTypeSupport.OpenTypeFactory;
 import org.apache.activemq.broker.region.Destination;
+import org.apache.activemq.broker.region.Queue;
 import org.apache.activemq.command.ActiveMQDestination;
 import org.apache.activemq.command.ActiveMQMessage;
 import org.apache.activemq.command.ActiveMQTextMessage;
@@ -317,5 +318,21 @@
     public void setProducerFlowControl(boolean producerFlowControl) {
       destination.setProducerFlowControl(producerFlowControl);      
     }
+
+    public int getMaxPageSize() {
+        return destination.getMaxPageSize();
+    }
+    
+    public void setMaxPageSize(int pageSize) {
+        destination.setMaxPageSize(pageSize);
+    }
+    
+    public boolean isUseCache() {
+        return destination.isUseCache();
+    }
+
+    public void setUseCache(boolean value) {
+        destination.setUseCache(value);    
+    }
   
 }

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java?rev=661224&r1=661223&r2=661224&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java Wed May 28 23:41:35 2008
@@ -214,5 +214,28 @@
      * @param maxAuditDepth the maxAuditDepth to set
      */
     public void setMaxAuditDepth(int maxAuditDepth);
+    
+    /**
+     * @return the maximum number of message to be paged into the 
+     * destination
+     */
+    public int getMaxPageSize();
+    
+    /**
+     * @param pageSize
+     * Set the maximum number of messages to page into the destination
+     */
+    public void setMaxPageSize(int pageSize);
+    
+    /**
+     * @return true if caching is enabled of for the destination
+     */
+    public boolean isUseCache();
+    
+    /**
+     * @param value
+     * enable/disable caching on the destination
+     */
+    public void setUseCache(boolean value);
 
 }

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DurableSubscriptionView.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DurableSubscriptionView.java?rev=661224&r1=661223&r2=661224&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DurableSubscriptionView.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DurableSubscriptionView.java Wed May 28 23:41:35 2008
@@ -21,6 +21,7 @@
 import javax.management.openmbean.TabularData;
 
 import org.apache.activemq.broker.ConnectionContext;
+import org.apache.activemq.broker.region.DurableTopicSubscription;
 import org.apache.activemq.broker.region.Subscription;
 import org.apache.activemq.command.RemoveSubscriptionInfo;
 
@@ -31,6 +32,7 @@
 
     protected ManagedRegionBroker broker;
     protected String subscriptionName;
+    protected DurableTopicSubscription durableSub;
 
     /**
      * Constructor
@@ -41,6 +43,7 @@
     public DurableSubscriptionView(ManagedRegionBroker broker, String clientId, Subscription sub) {
         super(clientId, sub);
         this.broker = broker;
+        this.durableSub=(DurableTopicSubscription) sub;
         this.subscriptionName = sub.getConsumerInfo().getSubscriptionName();
     }
 
@@ -86,6 +89,55 @@
     }
 
     public String toString() {
-        return "InactiveDurableSubscriptionView: " + getClientId() + ":" + getSubscriptionName();
+        return "ActiveDurableSubscriptionView: " + getClientId() + ":" + getSubscriptionName();
+    }
+
+    
+    public int cursorSize() {
+        if (durableSub != null && durableSub.getPending() != null) {
+            return durableSub.getPending().size();
+        }
+        return 0;
+    }
+
+   
+    public boolean doesCursorHaveMessagesBuffered() {
+        if (durableSub != null && durableSub.getPending() != null) {
+            return durableSub.getPending().hasMessagesBufferedToDeliver();
+        }
+        return false;
+    }
+
+   
+    public boolean doesCursorHaveSpace() {
+        if (durableSub != null && durableSub.getPending() != null) {
+            return durableSub.getPending().hasSpace();
+        }
+        return false;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.activemq.broker.jmx.DurableSubscriptionViewMBean#getCursorMemoryUsage()
+     */
+    public long getCursorMemoryUsage() {
+        if (durableSub != null && durableSub.getPending() != null && durableSub.getPending().getSystemUsage()!=null) {
+            return durableSub.getPending().getSystemUsage().getMemoryUsage().getUsage();
+        }
+        return 0;
+    }
+
+    
+    public int getCursorPercentUsage() {
+        if (durableSub != null && durableSub.getPending() != null && durableSub.getPending().getSystemUsage()!=null) {
+            return durableSub.getPending().getSystemUsage().getMemoryUsage().getPercentUsage();
+        }
+        return 0;
+    }
+
+    public boolean isCursorFull() {
+        if (durableSub != null && durableSub.getPending() != null) {
+            return durableSub.getPending().isFull();
+        }
+        return false;
     }
 }

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DurableSubscriptionViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DurableSubscriptionViewMBean.java?rev=661224&r1=661223&r2=661224&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DurableSubscriptionViewMBean.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DurableSubscriptionViewMBean.java Wed May 28 23:41:35 2008
@@ -50,4 +50,37 @@
      * stored for this subscription
      */
     void destroy() throws Exception;
+    
+    /**
+     * @return true if the message cursor has memory space available
+     * to page in more messages
+     */
+    public boolean doesCursorHaveSpace();
+    
+    /**
+     * @return true if the cursor has reached its memory limit for
+     * paged in messages
+     */
+    public boolean isCursorFull();
+    
+    /**
+     * @return true if the cursor has messages buffered to deliver
+     */
+    public boolean doesCursorHaveMessagesBuffered();
+    
+    /**
+     * @return the cursor memory usage in bytes
+     */
+    public long getCursorMemoryUsage();
+    
+    /**
+     * @return the cursor memory usage as a percentage
+     */
+    public int getCursorPercentUsage();
+    
+    /**
+     * @return the number of messages available to be paged in 
+     * by the cursor
+     */
+    public int cursorSize();
 }

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/InactiveDurableSubscriptionView.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/InactiveDurableSubscriptionView.java?rev=661224&r1=661223&r2=661224&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/InactiveDurableSubscriptionView.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/InactiveDurableSubscriptionView.java Wed May 28 23:41:35 2008
@@ -25,12 +25,10 @@
 import org.apache.activemq.command.SubscriptionInfo;
 
 /**
- * TODO why does this class not inherit from DurableSubscriptionView?
  * 
  * @version $Revision: 1.5 $
  */
-public class InactiveDurableSubscriptionView extends SubscriptionView implements DurableSubscriptionViewMBean {
-    protected ManagedRegionBroker broker;
+public class InactiveDurableSubscriptionView extends DurableSubscriptionView implements DurableSubscriptionViewMBean {
     protected SubscriptionInfo subscriptionInfo;
 
     /**
@@ -41,7 +39,7 @@
      * @param sub
      */
     public InactiveDurableSubscriptionView(ManagedRegionBroker broker, String clientId, SubscriptionInfo sub) {
-        super(clientId, null);
+        super(broker,clientId, null);
         this.broker = broker;
         this.subscriptionInfo = sub;
     }

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/QueueView.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/QueueView.java?rev=661224&r1=661223&r2=661224&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/QueueView.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/QueueView.java Wed May 28 23:41:35 2008
@@ -92,4 +92,56 @@
         return ((Queue)destination).moveMatchingMessagesTo(context, selector, toDestination, maximumMessages);
     }
 
+    
+    public int cursorSize() {
+        Queue queue = (Queue) destination;
+        if (queue.getMessages() != null){
+            return queue.getMessages().size();
+        }
+        return 0;
+    }
+
+   
+    public boolean doesCursorHaveMessagesBuffered() {
+       Queue queue = (Queue) destination;
+       if (queue.getMessages() != null){
+           return queue.getMessages().hasMessagesBufferedToDeliver();
+       }
+       return false;
+
+    }
+
+    
+    public boolean doesCursorHaveSpace() {
+        Queue queue = (Queue) destination;
+        if (queue.getMessages() != null){
+            return queue.getMessages().hasSpace();
+        }
+        return false;
+    }
+
+    
+    public long getCursorMemoryUsage() {
+        Queue queue = (Queue) destination;
+        if (queue.getMessages() != null &&  queue.getMessages().getSystemUsage() != null){
+            return queue.getMessages().getSystemUsage().getMemoryUsage().getUsage();
+        }
+        return 0;
+    }
+
+    public int getCursorPercentUsage() {
+        Queue queue = (Queue) destination;
+        if (queue.getMessages() != null &&  queue.getMessages().getSystemUsage() != null){
+            return queue.getMessages().getSystemUsage().getMemoryUsage().getPercentUsage();
+        }
+        return 0;
+    }
+
+    public boolean isCursorFull() {
+        Queue queue = (Queue) destination;
+        if (queue.getMessages() != null){
+            return queue.getMessages().isFull();
+        }
+        return false;
+    }
 }

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/QueueViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/QueueViewMBean.java?rev=661224&r1=661223&r2=661224&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/QueueViewMBean.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/QueueViewMBean.java Wed May 28 23:41:35 2008
@@ -112,5 +112,38 @@
      * of matched messages
      */
     int moveMatchingMessagesTo(String selector, String destinationName, int maximumMessages) throws Exception;
-
+    
+    /**
+     * @return true if the message cursor has memory space available
+     * to page in more messages
+     */
+    public boolean doesCursorHaveSpace();
+    
+    /**
+     * @return true if the cursor has reached its memory limit for
+     * paged in messages
+     */
+    public boolean isCursorFull();
+    
+    /**
+     * @return true if the cursor has messages buffered to deliver
+     */
+    public boolean doesCursorHaveMessagesBuffered();
+    
+    /**
+     * @return the cursor memory usage in bytes
+     */
+    public long getCursorMemoryUsage();
+    
+    /**
+     * @return the cursor memory usage as a percentage
+     */
+    public int getCursorPercentUsage();
+    
+    /**
+     * @return the number of messages available to be paged in 
+     * by the cursor
+     */
+    public int cursorSize();
+    
 }

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/cursors/PendingMessageCursor.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/cursors/PendingMessageCursor.java?rev=661224&r1=661223&r2=661224&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/cursors/PendingMessageCursor.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/cursors/PendingMessageCursor.java Wed May 28 23:41:35 2008
@@ -19,14 +19,11 @@
 import java.io.IOException;
 import java.util.LinkedList;
 import java.util.List;
-
 import org.apache.activemq.ActiveMQMessageAudit;
 import org.apache.activemq.Service;
 import org.apache.activemq.broker.ConnectionContext;
 import org.apache.activemq.broker.region.Destination;
 import org.apache.activemq.broker.region.MessageReference;
-import org.apache.activemq.broker.region.QueueMessageReference;
-import org.apache.activemq.command.MessageId;
 import org.apache.activemq.usage.SystemUsage;
 
 /**
@@ -194,6 +191,11 @@
      * @return true if the cursor is full
      */
     boolean isFull();
+    
+    /**
+     * @return true if the cursor has space to page messages into
+     */
+    public boolean hasSpace();
 
     /**
      * @return true if the cursor has buffered messages ready to deliver
@@ -280,6 +282,5 @@
      * @return true if a cache is being used
      */
     public boolean isUseCache();
-
-
+   
 }