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.ObjectName;
020 import org.apache.activemq.Service;
021
022
023 /**
024 * @author David Martin Clavo david(dot)martin(dot)clavo(at)gmail.com (for the reloadLog4jProperties method)
025 *
026 */
027 public interface BrokerViewMBean extends Service {
028
029 /**
030 * @return The unique id of the broker.
031 */
032 @MBeanInfo("The unique id of the broker.")
033 String getBrokerId();
034
035 /**
036 * @return The name of the broker.
037 */
038 @MBeanInfo("The name of the broker.")
039 String getBrokerName();
040
041 /**
042 * @return The name of the broker.
043 */
044 @MBeanInfo("The version of the broker.")
045 String getBrokerVersion();
046
047 /**
048 * The Broker will flush it's caches so that the garbage collector can
049 * reclaim more memory.
050 *
051 * @throws Exception
052 */
053 @MBeanInfo("Runs the Garbage Collector.")
054 void gc() throws Exception;
055
056 @MBeanInfo("Reset all broker statistics.")
057 void resetStatistics();
058
059 @MBeanInfo("Enable broker statistics.")
060 void enableStatistics();
061
062 @MBeanInfo("Disable broker statistics.")
063 void disableStatistics();
064
065 @MBeanInfo("Broker statistics enabled.")
066 boolean isStatisticsEnabled();
067
068 @MBeanInfo("Number of messages that have been sent to the broker.")
069 long getTotalEnqueueCount();
070
071 @MBeanInfo("Number of messages that have been acknowledged on the broker.")
072 long getTotalDequeueCount();
073
074 @MBeanInfo("Number of message consumers subscribed to destinations on the broker.")
075 long getTotalConsumerCount();
076
077 @MBeanInfo("Number of message producers active on destinations on the broker.")
078 long getTotalProducerCount();
079
080 @MBeanInfo("Number of unacknowledged messages on the broker.")
081 long getTotalMessageCount();
082
083 @MBeanInfo("Percent of memory limit used.")
084 int getMemoryPercentUsage();
085
086 @MBeanInfo("Memory limit, in bytes, used for holding undelivered messages before paging to temporary storage.")
087 long getMemoryLimit();
088
089 void setMemoryLimit(@MBeanInfo("bytes") long limit);
090
091 @MBeanInfo("Percent of store limit used.")
092 int getStorePercentUsage();
093
094 @MBeanInfo("Disk limit, in bytes, used for persistent messages before producers are blocked.")
095 long getStoreLimit();
096
097 void setStoreLimit(@MBeanInfo("bytes") long limit);
098
099 @MBeanInfo("Percent of temp limit used.")
100 int getTempPercentUsage();
101
102 @MBeanInfo("Disk limit, in bytes, used for non-persistent messages and temporary date before producers are blocked.")
103 long getTempLimit();
104
105 void setTempLimit(@MBeanInfo("bytes") long limit);
106
107 @MBeanInfo("Messages are synchronized to disk.")
108 boolean isPersistent();
109
110 @MBeanInfo("Slave broker.")
111 boolean isSlave();
112
113 /**
114 * Shuts down the JVM.
115 *
116 * @param exitCode the exit code that will be reported by the JVM process
117 * when it exits.
118 */
119 @MBeanInfo("Shuts down the JVM.")
120 void terminateJVM(@MBeanInfo("exitCode") int exitCode);
121
122 /**
123 * Stop the broker and all it's components.
124 */
125 @MBeanInfo("Stop the broker and all its components.")
126 void stop() throws Exception;
127 @MBeanInfo("Poll for queues matching queueName are empty before stopping")
128 void stopGracefully(String connectorName, String queueName, long timeout, long pollInterval) throws Exception;
129
130 @MBeanInfo("Topics (broadcasted 'queues'); generally system information.")
131 ObjectName[] getTopics();
132
133 @MBeanInfo("Standard Queues containing AIE messages.")
134 ObjectName[] getQueues();
135
136 @MBeanInfo("Temporary Topics; generally unused.")
137 ObjectName[] getTemporaryTopics();
138
139 @MBeanInfo("Temporary Queues; generally temporary message response holders.")
140 ObjectName[] getTemporaryQueues();
141
142 @MBeanInfo("Topic Subscribers")
143 ObjectName[] getTopicSubscribers();
144
145 @MBeanInfo("Durable (persistent) topic subscribers")
146 ObjectName[] getDurableTopicSubscribers();
147
148 @MBeanInfo("Inactive (disconnected persistent) topic subscribers")
149 ObjectName[] getInactiveDurableTopicSubscribers();
150
151 @MBeanInfo("Queue Subscribers.")
152 ObjectName[] getQueueSubscribers();
153
154 @MBeanInfo("Temporary Topic Subscribers.")
155 ObjectName[] getTemporaryTopicSubscribers();
156
157 @MBeanInfo("Temporary Queue Subscribers.")
158 ObjectName[] getTemporaryQueueSubscribers();
159
160 @MBeanInfo("Topic Producers.")
161 public ObjectName[] getTopicProducers();
162
163 @MBeanInfo("Queue Producers.")
164 public ObjectName[] getQueueProducers();
165
166 @MBeanInfo("Temporary Topic Producers.")
167 public ObjectName[] getTemporaryTopicProducers();
168
169 @MBeanInfo("Temporary Queue Producers.")
170 public ObjectName[] getTemporaryQueueProducers();
171
172 @MBeanInfo("Dynamic Destination Producers.")
173 public ObjectName[] getDynamicDestinationProducers();
174
175 @MBeanInfo("Adds a Connector to the broker.")
176 String addConnector(@MBeanInfo("discoveryAddress") String discoveryAddress) throws Exception;
177
178 @MBeanInfo("Adds a Network Connector to the broker.")
179 String addNetworkConnector(@MBeanInfo("discoveryAddress") String discoveryAddress) throws Exception;
180
181 @MBeanInfo("Removes a Connector from the broker.")
182 boolean removeConnector(@MBeanInfo("connectorName") String connectorName) throws Exception;
183
184 @MBeanInfo("Removes a Network Connector from the broker.")
185 boolean removeNetworkConnector(@MBeanInfo("connectorName") String connectorName) throws Exception;
186
187 /**
188 * Adds a Topic destination to the broker.
189 *
190 * @param name The name of the Topic
191 * @throws Exception
192 */
193 @MBeanInfo("Adds a Topic destination to the broker.")
194 void addTopic(@MBeanInfo("name") String name) throws Exception;
195
196 /**
197 * Adds a Queue destination to the broker.
198 *
199 * @param name The name of the Queue
200 * @throws Exception
201 */
202 @MBeanInfo("Adds a Queue destination to the broker.")
203 void addQueue(@MBeanInfo("name") String name) throws Exception;
204
205 /**
206 * Removes a Topic destination from the broker.
207 *
208 * @param name The name of the Topic
209 * @throws Exception
210 */
211 @MBeanInfo("Removes a Topic destination from the broker.")
212 void removeTopic(@MBeanInfo("name") String name) throws Exception;
213
214 /**
215 * Removes a Queue destination from the broker.
216 *
217 * @param name The name of the Queue
218 * @throws Exception
219 */
220 @MBeanInfo("Removes a Queue destination from the broker.")
221 void removeQueue(@MBeanInfo("name") String name) throws Exception;
222
223 /**
224 * Creates a new durable topic subscriber
225 *
226 * @param clientId the JMS client ID
227 * @param subscriberName the durable subscriber name
228 * @param topicName the name of the topic to subscribe to
229 * @param selector a selector or null
230 * @return the object name of the MBean registered in JMX
231 */
232 @MBeanInfo(value="Creates a new durable topic subscriber.")
233 ObjectName createDurableSubscriber(@MBeanInfo("clientId") String clientId, @MBeanInfo("subscriberName") String subscriberName, @MBeanInfo("topicName") String topicName, @MBeanInfo("selector") String selector) throws Exception;
234
235 /**
236 * Destroys a durable subscriber
237 *
238 * @param clientId the JMS client ID
239 * @param subscriberName the durable subscriber name
240 */
241 @MBeanInfo(value="Destroys a durable subscriber.")
242 void destroyDurableSubscriber(@MBeanInfo("clientId") String clientId, @MBeanInfo("subscriberName") String subscriberName) throws Exception;
243
244 /**
245 * Reloads log4j.properties from the classpath.
246 * This methods calls org.apache.activemq.transport.TransportLoggerControl.reloadLog4jProperties
247 * @throws Throwable
248 */
249 @MBeanInfo(value="Reloads log4j.properties from the classpath.")
250 public void reloadLog4jProperties() throws Throwable;
251
252 @MBeanInfo("The url of the openwire connector")
253 String getOpenWireURL();
254
255 @MBeanInfo("The url of the stomp connector")
256 String getStompURL();
257
258 @MBeanInfo("The url of the SSL connector")
259 String getSslURL();
260
261 @MBeanInfo("The url of the Stomp SSL connector")
262 String getStompSslURL();
263
264 @MBeanInfo("The url of the VM connector")
265 String getVMURL();
266
267 @MBeanInfo("The location of the data directory")
268 public String getDataDirectory();
269
270 @MBeanInfo("JMSJobScheduler")
271 ObjectName getJMSJobScheduler();
272
273 }