org.apache.activemq.broker.jmx.BrokerMBeanSupport Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of activemq-broker Show documentation
Show all versions of activemq-broker Show documentation
The ActiveMQ Message Broker implementation
/**
* 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.util.Hashtable;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import org.apache.activemq.broker.region.policy.AbortSlowConsumerStrategy;
import org.apache.activemq.command.ActiveMQDestination;
import org.apache.activemq.command.ConsumerInfo;
import org.apache.activemq.command.ProducerInfo;
import org.apache.activemq.transaction.XATransaction;
import org.apache.activemq.util.JMXSupport;
public class BrokerMBeanSupport {
// MBean Name Creation
public static ObjectName createBrokerObjectName(String jmxDomainName, String brokerName) throws MalformedObjectNameException {
String objectNameStr = jmxDomainName + ":type=Broker,brokerName=";
objectNameStr += JMXSupport.encodeObjectNamePart(brokerName);
return new ObjectName(objectNameStr);
}
public static ObjectName createDestinationName(ObjectName brokerObjectName, ActiveMQDestination destination) throws MalformedObjectNameException {
return createDestinationName(brokerObjectName.toString(), destination);
}
public static ObjectName createDestinationName(String brokerObjectName, ActiveMQDestination destination) throws MalformedObjectNameException {
String objectNameStr = brokerObjectName;
objectNameStr += createDestinationProperties(destination);
return new ObjectName(objectNameStr);
}
public static ObjectName createDestinationName(String brokerObjectName, String type, String name) throws MalformedObjectNameException {
String objectNameStr = brokerObjectName;
objectNameStr += createDestinationProperties(type, name);
return new ObjectName(objectNameStr);
}
private static String createDestinationProperties(ActiveMQDestination destination){
String result = "";
if (destination != null){
result = createDestinationProperties(destination.getDestinationTypeAsString(), destination.getPhysicalName());
}
return result;
}
private static String createDestinationProperties(String type, String name){
return ",destinationType="+ JMXSupport.encodeObjectNamePart(type) +
",destinationName=" + JMXSupport.encodeObjectNamePart(name);
}
public static ObjectName createSubscriptionName(ObjectName brokerObjectName, String connectionClientId, ConsumerInfo info) throws MalformedObjectNameException {
return createSubscriptionName(brokerObjectName.toString(), connectionClientId, info);
}
public static ObjectName createSubscriptionName(String brokerObjectName, String connectionClientId, ConsumerInfo info) throws MalformedObjectNameException {
String objectNameStr = brokerObjectName;
objectNameStr += createDestinationProperties(info.getDestination()) + ",endpoint=Consumer";
objectNameStr += ",clientId=" + JMXSupport.encodeObjectNamePart(connectionClientId);
objectNameStr += ",consumerId=";
if (info.isDurable()){
objectNameStr += "Durable(" + JMXSupport.encodeObjectNamePart(connectionClientId + ":" + info.getSubscriptionName()) +")";
} else {
objectNameStr += JMXSupport.encodeObjectNamePart(info.getConsumerId().toString());
}
return new ObjectName(objectNameStr);
}
public static ObjectName createProducerName(ObjectName brokerObjectName, String connectionClientId, ProducerInfo info) throws MalformedObjectNameException {
return createProducerName(brokerObjectName.toString(), connectionClientId, info);
}
public static ObjectName createProducerName(String brokerObjectName, String connectionClientId, ProducerInfo producerInfo) throws MalformedObjectNameException {
String objectNameStr = brokerObjectName;
if (producerInfo.getDestination() == null) {
objectNameStr += ",endpoint=dynamicProducer";
} else {
objectNameStr += createDestinationProperties(producerInfo.getDestination()) + ",endpoint=Producer";
}
objectNameStr += ",clientId=" + JMXSupport.encodeObjectNamePart(connectionClientId);
objectNameStr += ",producerId=" + JMXSupport.encodeObjectNamePart(producerInfo.getProducerId().toString());
return new ObjectName(objectNameStr);
}
public static ObjectName createXATransactionName(ObjectName brokerObjectName, XATransaction transaction) throws MalformedObjectNameException {
return createXATransactionName(brokerObjectName.toString(), transaction);
}
public static ObjectName createXATransactionName(String brokerObjectName, XATransaction transaction) throws MalformedObjectNameException {
String objectNameStr = brokerObjectName;
objectNameStr += "," + "transactionType=RecoveredXaTransaction";
objectNameStr += "," + "xid=" + JMXSupport.encodeObjectNamePart(transaction.getTransactionId().toString());
return new ObjectName(objectNameStr);
}
public static ObjectName createLog4JConfigViewName(String brokerObjectName) throws MalformedObjectNameException {
String objectNameStr = brokerObjectName;
objectNameStr += "," + "service=Log4JConfiguration";
return new ObjectName(objectNameStr);
}
public static ObjectName createPersistenceAdapterName(String brokerObjectName, String name) throws MalformedObjectNameException {
String objectNameStr = brokerObjectName;
objectNameStr += "," + "service=PersistenceAdapter";
objectNameStr += "," + "instanceName=" + JMXSupport.encodeObjectNamePart(name);
return new ObjectName(objectNameStr);
}
public static ObjectName createAbortSlowConsumerStrategyName(ObjectName brokerObjectName, AbortSlowConsumerStrategy strategy) throws MalformedObjectNameException {
return createAbortSlowConsumerStrategyName(brokerObjectName.toString(), strategy);
}
public static ObjectName createAbortSlowConsumerStrategyName(String brokerObjectName, AbortSlowConsumerStrategy strategy) throws MalformedObjectNameException {
String objectNameStr = brokerObjectName;
objectNameStr += ",service=SlowConsumerStrategy,instanceName="+ JMXSupport.encodeObjectNamePart(strategy.getName());
ObjectName objectName = new ObjectName(objectNameStr);
return objectName;
}
public static ObjectName createConnectorName(ObjectName brokerObjectName, String type, String name) throws MalformedObjectNameException {
return createConnectorName(brokerObjectName.toString(), type, name);
}
public static ObjectName createConnectorName(String brokerObjectName, String type, String name) throws MalformedObjectNameException {
String objectNameStr = brokerObjectName;
objectNameStr += ",connector=" + type + ",connectorName="+ JMXSupport.encodeObjectNamePart(name);
ObjectName objectName = new ObjectName(objectNameStr);
return objectName;
}
public static ObjectName createNetworkConnectorName(ObjectName brokerObjectName, String type, String name) throws MalformedObjectNameException {
return createNetworkConnectorName(brokerObjectName.toString(), type, name);
}
public static ObjectName createVirtualDestinationSelectorCacheName(ObjectName brokerObjectName, String type, String name) throws MalformedObjectNameException {
String objectNameStr = brokerObjectName.toString();
objectNameStr += ",service=" + type + ",virtualDestinationSelectoCache="+ JMXSupport.encodeObjectNamePart(name);
ObjectName objectName = new ObjectName(objectNameStr);
return objectName;
}
public static ObjectName createNetworkConnectorName(String brokerObjectName, String type, String name) throws MalformedObjectNameException {
String objectNameStr = brokerObjectName;
objectNameStr += ",connector=" + type + ",networkConnectorName="+ JMXSupport.encodeObjectNamePart(name);
ObjectName objectName = new ObjectName(objectNameStr);
return objectName;
}
public static ObjectName createConnectionViewByType(ObjectName connectorName, String type, String name) throws MalformedObjectNameException {
String objectNameStr = connectorName.toString();
objectNameStr += ",connectionViewType=" + JMXSupport.encodeObjectNamePart(type);
objectNameStr += ",connectionName="+ JMXSupport.encodeObjectNamePart(name);
return new ObjectName(objectNameStr);
}
public static ObjectName createNetworkBridgeObjectName(ObjectName connectorName, String remoteAddress) throws MalformedObjectNameException {
Hashtable map = new Hashtable(connectorName.getKeyPropertyList());
map.put("networkBridge", JMXSupport.encodeObjectNamePart(remoteAddress));
return new ObjectName(connectorName.getDomain(), map);
}
public static ObjectName createNetworkOutBoundDestinationObjectName(ObjectName networkName, ActiveMQDestination destination) throws MalformedObjectNameException {
String str = networkName.toString();
str += ",direction=outbound" + createDestinationProperties(destination);
return new ObjectName(str);
}
public static ObjectName createNetworkInBoundDestinationObjectName(ObjectName networkName, ActiveMQDestination destination) throws MalformedObjectNameException {
String str = networkName.toString();
str += ",direction=inbound" + createDestinationProperties(destination);
return new ObjectName(str);
}
public static ObjectName createProxyConnectorName(ObjectName brokerObjectName, String type, String name) throws MalformedObjectNameException {
return createProxyConnectorName(brokerObjectName.toString(), type, name);
}
public static ObjectName createProxyConnectorName(String brokerObjectName, String type, String name) throws MalformedObjectNameException {
String objectNameStr = brokerObjectName;
objectNameStr += ",connector=" + type + ",proxyConnectorName="+ JMXSupport.encodeObjectNamePart(name);
ObjectName objectName = new ObjectName(objectNameStr);
return objectName;
}
public static ObjectName createJmsConnectorName(ObjectName brokerObjectName, String type, String name) throws MalformedObjectNameException {
return createJmsConnectorName(brokerObjectName.toString(), type, name);
}
public static ObjectName createJmsConnectorName(String brokerObjectName, String type, String name) throws MalformedObjectNameException {
String objectNameStr = brokerObjectName;
objectNameStr += ",connector=" + type + ",jmsConnectors="+ JMXSupport.encodeObjectNamePart(name);
ObjectName objectName = new ObjectName(objectNameStr);
return objectName;
}
public static ObjectName createJobSchedulerServiceName(ObjectName brokerObjectName) throws MalformedObjectNameException {
return createJobSchedulerServiceName(brokerObjectName.toString());
}
public static ObjectName createJobSchedulerServiceName(String brokerObjectName) throws MalformedObjectNameException {
String objectNameStr = brokerObjectName;
objectNameStr += ",service=JobScheduler,name=JMS";
ObjectName objectName = new ObjectName(objectNameStr);
return objectName;
}
public static ObjectName createHealthServiceName(ObjectName brokerObjectName) throws MalformedObjectNameException {
return createHealthServiceName(brokerObjectName.toString());
}
public static ObjectName createHealthServiceName(String brokerObjectName) throws MalformedObjectNameException {
String objectNameStr = brokerObjectName;
objectNameStr += ",service=Health";
ObjectName objectName = new ObjectName(objectNameStr);
return objectName;
}
// MBean Query Creation
public static ObjectName createConnectionQuery(String jmxDomainName, String brokerName, String name) throws MalformedObjectNameException {
ObjectName brokerMBeanName = createBrokerObjectName(jmxDomainName, brokerName);
return createConnectionQuery(brokerMBeanName.toString(), name);
}
public static ObjectName createConnectionQuery(String brokerMBeanName, String name) throws MalformedObjectNameException {
return new ObjectName(brokerMBeanName + ","
+ "connector=*," + "connectorName=*," + "connectionViewType=*,"
+ "connectionName=" + JMXSupport.encodeObjectNamePart(name));
}
public static ObjectName createQueueQuery(String brokerMBeanName) throws MalformedObjectNameException {
return createConnectionQuery(brokerMBeanName, "*");
}
public static ObjectName createQueueQuery(String brokerMBeanName, String destinationName) throws MalformedObjectNameException {
return new ObjectName(brokerMBeanName + ","
+ "destinationType=Queue,"
+ "destinationName=" + JMXSupport.encodeObjectNamePart(destinationName));
}
public static ObjectName createTopicQuery(String brokerMBeanName) throws MalformedObjectNameException {
return createConnectionQuery(brokerMBeanName, "*");
}
public static ObjectName createTopicQuery(String brokerMBeanName, String destinationName) throws MalformedObjectNameException {
return new ObjectName(brokerMBeanName + ","
+ "destinationType=Topic,"
+ "destinationName=" + JMXSupport.encodeObjectNamePart(destinationName));
}
public static ObjectName createConsumerQueury(String jmxDomainName, String clientId) throws MalformedObjectNameException {
return createConsumerQueury(jmxDomainName, null, clientId);
}
public static ObjectName createConsumerQueury(String jmxDomainName, String brokerName, String clientId) throws MalformedObjectNameException {
return new ObjectName(jmxDomainName + ":type=Broker,brokerName="
+ (brokerName != null ? brokerName : "*") + ","
+ "destinationType=*,destinationName=*,"
+ "endpoint=Consumer,"
+ "clientId=" + JMXSupport.encodeObjectNamePart(clientId) + ","
+ "consumerId=*");
}
public static ObjectName createProducerQueury(String jmxDomainName, String clientId) throws MalformedObjectNameException {
return createProducerQueury(jmxDomainName, null, clientId);
}
public static ObjectName createProducerQueury(String jmxDomainName, String brokerName, String clientId) throws MalformedObjectNameException {
return new ObjectName(jmxDomainName + ":type=Broker,brokerName="
+ (brokerName != null ? brokerName : "*") + ","
+ "destinationType=*,destinationName=*,"
+ "endpoint=Producer,"
+ "clientId=" + JMXSupport.encodeObjectNamePart(clientId) + ","
+ "producerId=*");
}
}