首先在 activemq.xml 中新增以下屬性
在broker 節點新增屬性?useJmx="true"
在managementContext 節點配置斷開與訪問服務iP
配置成功后啟動
下面來看測試代碼
/**
* @Title: ActivemqTest.java
* @Package activemq
* @Description: TODO(用一句話描述該文件做什么)
* @author LYL
* @date 下午2:25:59
* @version V1.0
*/
package activemq;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.HashMap;
import java.util.Map;
import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import org.apache.activemq.broker.jmx.BrokerViewMBean;
import org.apache.activemq.broker.jmx.QueueViewMBean;
/**
* @Title: ActivemqTest.java
* @Package activemq
* @Description: TODO(用一句話描述該文件做什么)
* @author LYL
* @date 下午2:25:59
* @version V1.0
*/
public class ActivemqTest {
public static void main(String[] args) throws Exception {
String ip = "127.0.0.1:8188";
String url = String.format("service:jmx:rmi:///jndi/rmi://%s/jmxrmi",ip);
Map credentials = new HashMap<>();
// credentials.put(JMXConnector.CREDENTIALS, new String[] {"admin", "admin"});
JMXServiceURL urls = new JMXServiceURL(url);
JMXConnector connector = JMXConnectorFactory.connect(urls,credentials);
connector.connect();
MBeanServerConnection conn = connector.getMBeanServerConnection();
ObjectName name = new ObjectName("org.apache.activemq:brokerName=localhost,type=Broker");
BrokerViewMBean mBean = (BrokerViewMBean)MBeanServerInvocationHandler.newProxyInstance(conn, name, BrokerViewMBean.class, true);
ObjectName[] pAry = mBean.getQueueSubscribers();
for (ObjectName objectName : pAry) {
}
ObjectName[] ary = mBean.getQueues();
for (ObjectName objectName : ary) {
QueueViewMBean queueBean = (QueueViewMBean) MBeanServerInvocationHandler.newProxyInstance(conn, objectName, QueueViewMBean.class, true);
System.out.println("隊列的名稱:"+queueBean.getName());
System.out.println("消息積壓數:"+queueBean.getQueueSize());
System.out.println("入隊:"+queueBean.getEnqueueCount());
System.out.println("出隊:"+queueBean.getDequeueCount());
System.out.println("消費者數:"+queueBean.getConsumerCount());
System.out.println("生產者數:"+queueBean.getProducerCount());
}
}
}