/** * 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.jmx; import java.io.IOException; import java.util.Map; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import javax.management.openmbean.CompositeData; import javax.management.openmbean.OpenDataException; import org.apache.activemq.Service; public interface BrokerViewMBean extends Service { /** * @return The unique id of the broker. */ @MBeanInfo("The unique id of the broker.") String getBrokerId(); /** * @return The name of the broker. */ @MBeanInfo("The name of the broker.") String getBrokerName(); /** * @return The name of the broker. */ @MBeanInfo("The version of the broker.") String getBrokerVersion(); /** * @return Uptime of the broker. */ @MBeanInfo("Uptime of the broker.") String getUptime(); /** * @return Uptime of the broker in milliseconds. */ @MBeanInfo("Uptime of the broker in milliseconds.") long getUptimeMillis(); /** * @return The current number of active connections on this Broker. */ int getCurrentConnectionsCount(); /** * @return The total number of connections serviced since this Broker was started. */ long getTotalConnectionsCount(); /** * The Broker will flush it's caches so that the garbage collector can * reclaim more memory. * * @throws Exception */ @MBeanInfo("Runs the Garbage Collector.") void gc() throws Exception; @MBeanInfo("Reset all broker statistics.") void resetStatistics(); @MBeanInfo("Enable broker statistics.") void enableStatistics(); @MBeanInfo("Disable broker statistics.") void disableStatistics(); @MBeanInfo("Broker statistics enabled.") boolean isStatisticsEnabled(); @MBeanInfo("Number of messages that have been sent to the broker.") long getTotalEnqueueCount(); @MBeanInfo("Number of messages that have been acknowledged on the broker.") long getTotalDequeueCount(); @MBeanInfo("Number of message consumers subscribed to destinations on the broker.") long getTotalConsumerCount(); @MBeanInfo("Number of message producers active on destinations on the broker.") long getTotalProducerCount(); @MBeanInfo("Number of unacknowledged messages on the broker.") long getTotalMessageCount(); @MBeanInfo("Average message size on this broker") long getAverageMessageSize(); @MBeanInfo("Max message size on this broker") public long getMaxMessageSize(); @MBeanInfo("Min message size on this broker") public long getMinMessageSize(); @MBeanInfo("Percent of memory limit used.") int getMemoryPercentUsage(); @MBeanInfo("Memory limit, in bytes, used for holding undelivered messages before paging to temporary storage.") long getMemoryLimit(); void setMemoryLimit(@MBeanInfo("bytes") long limit); @MBeanInfo("Percent of store limit used.") int getStorePercentUsage(); @MBeanInfo("Disk limit, in bytes, used for persistent messages before producers are blocked.") long getStoreLimit(); void setStoreLimit(@MBeanInfo("bytes") long limit); @MBeanInfo("Percent of temp limit used.") int getTempPercentUsage(); @MBeanInfo("Disk limit, in bytes, used for non-persistent messages and temporary data before producers are blocked.") long getTempLimit(); void setTempLimit(@MBeanInfo("bytes") long limit); @MBeanInfo("Percent of job store limit used.") int getJobSchedulerStorePercentUsage(); @MBeanInfo("Disk limit, in bytes, used for scheduled messages before producers are blocked.") long getJobSchedulerStoreLimit(); void setJobSchedulerStoreLimit(@MBeanInfo("bytes") long limit); @MBeanInfo("Messages are synchronized to disk.") boolean isPersistent(); @MBeanInfo("Slave broker.") boolean isSlave(); /** * Shuts down the JVM. * * @param exitCode the exit code that will be reported by the JVM process * when it exits. */ @MBeanInfo("Shuts down the JVM.") void terminateJVM(@MBeanInfo("exitCode") int exitCode); /** * Stop the broker and all it's components. */ @Override @MBeanInfo("Stop the broker and all its components.") void stop() throws Exception; /** * Restart the broker and all it's components. */ @MBeanInfo("Restart the broker and all its components.") void restart() throws Exception; @MBeanInfo("Poll for queues matching queueName are empty before stopping") void stopGracefully(String connectorName, String queueName, long timeout, long pollInterval) throws Exception; @MBeanInfo("Topics (broadcasted 'queues'); generally system information.") ObjectName[] getTopics(); @MBeanInfo("Standard Queues containing AIE messages.") ObjectName[] getQueues(); /** * Queue Query API, take a look at {@link DestinationsViewFilter} for more information */ @MBeanInfo("Query queues") String queryQueues(String filter, int page, int pageSize) throws IOException; /** * Topic Query API, take a look at {@link DestinationsViewFilter} for more information */ @MBeanInfo("Query topics") String queryTopics(String filter, int page, int pageSize) throws IOException; public CompositeData[] browseQueue(String queueName) throws OpenDataException, MalformedObjectNameException; @MBeanInfo("Temporary Topics; generally unused.") ObjectName[] getTemporaryTopics(); @MBeanInfo("Temporary Queues; generally temporary message response holders.") ObjectName[] getTemporaryQueues(); @MBeanInfo("Topic Subscribers") ObjectName[] getTopicSubscribers(); @MBeanInfo("Durable (persistent) topic subscribers") ObjectName[] getDurableTopicSubscribers(); @MBeanInfo("Inactive (disconnected persistent) topic subscribers") ObjectName[] getInactiveDurableTopicSubscribers(); @MBeanInfo("Queue Subscribers.") ObjectName[] getQueueSubscribers(); @MBeanInfo("Temporary Topic Subscribers.") ObjectName[] getTemporaryTopicSubscribers(); @MBeanInfo("Temporary Queue Subscribers.") ObjectName[] getTemporaryQueueSubscribers(); @MBeanInfo("Topic Producers.") public ObjectName[] getTopicProducers(); @MBeanInfo("Queue Producers.") public ObjectName[] getQueueProducers(); @MBeanInfo("Temporary Topic Producers.") public ObjectName[] getTemporaryTopicProducers(); @MBeanInfo("Temporary Queue Producers.") public ObjectName[] getTemporaryQueueProducers(); @MBeanInfo("Dynamic Destination Producers.") public ObjectName[] getDynamicDestinationProducers(); @MBeanInfo("Adds a Connector to the broker.") String addConnector(@MBeanInfo("discoveryAddress") String discoveryAddress) throws Exception; @MBeanInfo("Adds a Network Connector to the broker.") String addNetworkConnector(@MBeanInfo("discoveryAddress") String discoveryAddress) throws Exception; @MBeanInfo("Removes a Connector from the broker.") boolean removeConnector(@MBeanInfo("connectorName") String connectorName) throws Exception; @MBeanInfo("Removes a Network Connector from the broker.") boolean removeNetworkConnector(@MBeanInfo("connectorName") String connectorName) throws Exception; /** * Adds a Topic destination to the broker. * * @param name The name of the Topic * @throws Exception */ @MBeanInfo("Adds a Topic destination to the broker.") void addTopic(@MBeanInfo("name") String name) throws Exception; /** * Adds a Queue destination to the broker. * * @param name The name of the Queue * @throws Exception */ @MBeanInfo("Adds a Queue destination to the broker.") void addQueue(@MBeanInfo("name") String name) throws Exception; /** * Removes a Topic destination from the broker. * * @param name The name of the Topic * @throws Exception */ @MBeanInfo("Removes a Topic destination from the broker.") void removeTopic(@MBeanInfo("name") String name) throws Exception; /** * Removes a Queue destination from the broker. * * @param name The name of the Queue * @throws Exception */ @MBeanInfo("Removes a Queue destination from the broker.") void removeQueue(@MBeanInfo("name") String name) throws Exception; /** * Creates a new durable topic subscriber * * @param clientId the JMS client ID * @param subscriberName the durable subscriber name * @param topicName the name of the topic to subscribe to * @param selector a selector or null * @return the object name of the MBean registered in JMX */ @MBeanInfo(value="Creates a new durable topic subscriber.") ObjectName createDurableSubscriber(@MBeanInfo("clientId") String clientId, @MBeanInfo("subscriberName") String subscriberName, @MBeanInfo("topicName") String topicName, @MBeanInfo("selector") String selector) throws Exception; /** * Destroys a durable subscriber * * @param clientId the JMS client ID * @param subscriberName the durable subscriber name */ @MBeanInfo(value="Destroys a durable subscriber.") void destroyDurableSubscriber(@MBeanInfo("clientId") String clientId, @MBeanInfo("subscriberName") String subscriberName) throws Exception; /** * Reloads log4j.properties from the classpath. * This methods calls org.apache.activemq.transport.TransportLoggerControl.reloadLog4jProperties * @throws Throwable */ @MBeanInfo(value="Reloads log4j.properties from the classpath.") public void reloadLog4jProperties() throws Throwable; @MBeanInfo("The url of the VM connector") String getVMURL(); @MBeanInfo("The map of all defined transport connectors, with transport name as a key") Map<String, String> getTransportConnectors(); @MBeanInfo("The url of transport connector by it's type; e.g. tcp, stomp, ssl, etc.") String getTransportConnectorByType(String type); @MBeanInfo("The location of the data directory") public String getDataDirectory(); @MBeanInfo("JMSJobScheduler") ObjectName getJMSJobScheduler(); }