001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.activemq.broker.jmx;
018
019 import javax.management.openmbean.CompositeData;
020 import javax.management.openmbean.OpenDataException;
021
022 public interface QueueViewMBean extends DestinationViewMBean {
023
024 /**
025 * Retrieve a message from the destination's queue.
026 *
027 * @param messageId the message id of the message to retrieve
028 * @return A CompositeData object which is a JMX version of the messages
029 * @throws OpenDataException
030 */
031 @MBeanInfo("View a message from the destination by JMS message ID.")
032 CompositeData getMessage(@MBeanInfo("messageId") String messageId) throws OpenDataException;
033
034 /**
035 * Removes a message from the queue. If the message has already been
036 * dispatched to another consumer, the message cannot be deleted and this
037 * method will return false.
038 *
039 * @param messageId
040 * @return true if the message was found and could be successfully deleted.
041 * @throws Exception
042 */
043 @MBeanInfo("Remove a message from the destination by JMS message ID. If the message has been dispatched, it cannot be deleted and false is returned.")
044 boolean removeMessage(@MBeanInfo("messageId") String messageId) throws Exception;
045
046 /**
047 * Removes the messages matching the given selector
048 *
049 * @return the number of messages removed
050 */
051 @MBeanInfo("Removes messages from the destination based on an SQL-92 selection on the message headers or XPATH on the body.")
052 int removeMatchingMessages(@MBeanInfo("selector") String selector) throws Exception;
053
054 /**
055 * Removes the messages matching the given selector up to the maximum number
056 * of matched messages
057 *
058 * @return the number of messages removed
059 */
060 @MBeanInfo("Removes up to a specified number of messages from the destination based on an SQL-92 selection on the message headers or XPATH on the body.")
061 int removeMatchingMessages(@MBeanInfo("selector") String selector, @MBeanInfo("maximumMessages") int maximumMessages) throws Exception;
062
063 /**
064 * Removes all of the messages in the queue.
065 *
066 * @throws Exception
067 */
068 @MBeanInfo("Removes all of the messages in the queue.")
069 void purge() throws Exception;
070
071 /**
072 * Copies a given message to another destination.
073 *
074 * @param messageId
075 * @param destinationName
076 * @return true if the message was found and was successfully copied to the
077 * other destination.
078 * @throws Exception
079 */
080 @MBeanInfo("Copies a message with the given JMS message ID into the specified destination.")
081 boolean copyMessageTo(@MBeanInfo("messageId") String messageId, @MBeanInfo("destinationName") String destinationName) throws Exception;
082
083 /**
084 * Copies the messages matching the given selector
085 *
086 * @return the number of messages copied
087 */
088 @MBeanInfo("Copies messages based on an SQL-92 selecton on the message headers or XPATH on the body into the specified destination.")
089 int copyMatchingMessagesTo(@MBeanInfo("selector") String selector, @MBeanInfo("destinationName") String destinationName) throws Exception;
090
091 /**
092 * Copies the messages matching the given selector up to the maximum number
093 * of matched messages
094 *
095 * @return the number of messages copied
096 */
097 @MBeanInfo("Copies up to a specified number of messages based on an SQL-92 selecton on the message headers or XPATH on the body into the specified destination.")
098 int copyMatchingMessagesTo(@MBeanInfo("selector") String selector, @MBeanInfo("destinationName") String destinationName, @MBeanInfo("maximumMessages") int maximumMessages) throws Exception;
099
100 /**
101 * Moves the message to another destination.
102 *
103 * @param messageId
104 * @param destinationName
105 * @return true if the message was found and was successfully copied to the
106 * other destination.
107 * @throws Exception
108 */
109 @MBeanInfo("Moves a message with the given JMS message ID into the specified destination.")
110 boolean moveMessageTo(@MBeanInfo("messageId") String messageId, @MBeanInfo("destinationName") String destinationName) throws Exception;
111
112 /**
113 * Moves a message back to its original destination
114 */
115 @MBeanInfo("Moves a message with the given JMS message back to its original destination")
116 boolean retryMessage(@MBeanInfo("messageId") String messageId) throws Exception;
117
118 /**
119 * Moves the messages matching the given selector
120 *
121 * @return the number of messages removed
122 */
123 @MBeanInfo("Moves messages based on an SQL-92 selecton on the message headers or XPATH on the body into the specified destination.")
124 int moveMatchingMessagesTo(@MBeanInfo("selector") String selector, @MBeanInfo("destinationName") String destinationName) throws Exception;
125
126 /**
127 * Moves the messages matching the given selector up to the maximum number
128 * of matched messages
129 */
130 @MBeanInfo("Moves up to a specified number of messages based on an SQL-92 selecton on the message headers or XPATH on the body into the specified destination.")
131 int moveMatchingMessagesTo(@MBeanInfo("selector") String selector, @MBeanInfo("destinationName") String destinationName, @MBeanInfo("maximumMessages") int maximumMessages) throws Exception;
132
133 /**
134 * @return true if the message cursor has memory space available
135 * to page in more messages
136 */
137 @MBeanInfo("Message cursor has memory space available")
138 public boolean doesCursorHaveSpace();
139
140 /**
141 * @return true if the cursor has reached its memory limit for
142 * paged in messages
143 */
144 @MBeanInfo("Message cusor has reached its memory limit for paged in messages")
145 public boolean isCursorFull();
146
147 /**
148 * @return true if the cursor has messages buffered to deliver
149 */
150 @MBeanInfo("Message cursor has buffered messages to deliver")
151 public boolean doesCursorHaveMessagesBuffered();
152
153 /**
154 * @return the cursor memory usage in bytes
155 */
156 @MBeanInfo("Message cursor memory usage, in bytes.")
157 public long getCursorMemoryUsage();
158
159 /**
160 * @return the cursor memory usage as a percentage
161 */
162 @MBeanInfo("Percentage of memory limit used")
163 public int getCursorPercentUsage();
164
165 /**
166 * @return the number of messages available to be paged in
167 * by the cursor
168 */
169 @MBeanInfo("Number of messages available to be paged in by the cursor.")
170 public int cursorSize();
171
172 /**
173 * @return true if caching is currently enabled of for the destination
174 */
175 @MBeanInfo("Caching is enabled")
176 boolean isCacheEnabled();
177 }