}
return writerMap.get(key);
}
private void queryClients(String broker, String typeName, ExchangeMetric metric) throws Exception {
JMXConnector connector;
MBeanServerConnection connection;
AdminConnectionFactory acf;
acf = new AdminConnectionFactory();
acf.setProperty(AdminConnectionConfiguration.imqAddress, broker);
connector = acf.createConnection();
try {
connection = connector.getMBeanServerConnection();
ObjectName exchangeManagerName = new ObjectName("com.sun.messaging.jms.server:" + typeName);
String[] consumerIDs = (String[]) connection.invoke(exchangeManagerName, "getConsumerIDs", null, null);
if(consumerIDs != null) {
for(String consumerID : consumerIDs) {
if(consumerID != null) {
try {
CompositeData info = (CompositeData) connection.invoke(consumerManagerName, "getConsumerInfoByID", new Object[] {
consumerID
}, MBEAN_INVOKE_SIG);
if(info != null) {
metric.addConsumer(info.get("Host").toString());
}
}
catch(Exception e) {
logger.warn("cannot get info of consumer ID {}", consumerID);
}
}
}
}
String[] producerIDs = (String[]) connection.invoke(exchangeManagerName, "getProducerIDs", null, null);
if(producerIDs != null) {
for(String producerID : producerIDs) {
if(producerID != null) {
try {
CompositeData info = (CompositeData) connection.invoke(producerManagerName, "getProducerInfoByID", new Object[] {
producerID
}, MBEAN_INVOKE_SIG);
if(info != null) {
metric.addProducer(info.get("Host").toString());
}
}
catch(Exception e) {
logger.warn("cannot get info of producer ID {}", producerID);
}
}
}
}
}
finally {
connector.close();
}
}