首先我按照網上的要求配置了相關的activemq的配置信息
然後我編寫了java測試代碼
代碼如下
package demo;
import java.util.HashMap;
import java.util.Map;
import java.util.PriorityQueue;
//import javax.management.MBeanInfo;
import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.MalformedObjectNameException;
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.DestinationViewMBean;
import org.apache.activemq.broker.jmx.QueueViewMBean;
import org.apache.activemq.broker.jmx.DestinationViewMBean;
import org.apache.activemq.broker.view.*;
public class ACJ {
public static final String reportQueueName ="zc-queue-actual";//生成核對報告隊列名
private static final String connectorPort = "11099";
private static final String connectorPath = "/jmxrmi";
private static final String jmxDomain = "org.apache.activemq";
public static PriorityQueue<MQQue> getAllQueue(String ip)throws Exception {
String Surl = "service:jmx:rmi:///jndi/rmi://60.60.60.117:11099/jmxrmi";
String userName = "admin";
String userPwd = "activemq";
Map<String, String[]> env = new HashMap<String, String[]>();
String[] credentials = { userName, userPwd };
env.put("jmx.remote.credentials", credentials);
BrokerViewMBean mBean=null;
MBeanServerConnection connection=null;
ObjectName name =null;
PriorityQueue<MQQue> ques=new PriorityQueue<MQQue>();
try{
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://"+ip+":" + connectorPort + connectorPath);
JMXConnector jmxc = JMXConnectorFactory.connect(url, env);
jmxc.connect();
connection = jmxc.getMBeanServerConnection();
name = new ObjectName(jmxDomain + ":brokerName=localhost,type=Broker");
mBean = (BrokerViewMBean)MBeanServerInvocationHandler.newProxyInstance(connection, name, BrokerViewMBean.class, true);
}catch (Exception e){
System.out.println(e);
}
if(mBean!=null){
System.out.println("success!");
System.out.println(mBean.getBrokerName());
for(ObjectName om : mBean.getQueues()){
System.out.println(om.getCanonicalName());
System.out.println(om.toString());
QueueViewMBean mq = (QueueViewMBean)MBeanServerInvocationHandler.newProxyInstance(connection,om,QueueViewMBean.class, true);
// System.out.println(mq.getConsumerCount());
}
}
return ques;
}
}
上述代碼運行後結果如圖
然後將註釋行釋放的運行結果是這樣的:
我找了很多方法,仍然是沒有辦法解決,不知道有沒有大神幫個忙看看?