package com.iss.ibm.monitor;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import com.ibm.mq.MQException;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
import com.iss.context.MQMonitorContext;
import com.iss.context.model.ContextModel;
import com.iss.context.model.MQQueueManagerModel;
import com.iss.context.model.MQServerModel;
import com.iss.ibm.monitor.model.QueueMonitorTotleModel;
import com.iss.ibm.monitor.util.TimeUtil;
/**
* MQ监控入口类
* @author 王成(chengwangi@isoftstone.com)
* @date 2012-11-16 下午04:41:33
*/
public class MQMonitor
{
/* 保存配置档信息的环境 */
private final MQMonitorContext monitorContext =
new MQMonitorContext();
/**
* 执行监控MQ,监控信息打印在Console中
* @author 王成(chengwangi@isoftstone.com)
* @date 2012-11-23 上午11:24:07
* @param minute
* @return 是否有信息打出,如果有返回true;如果没有返回false
*/
public boolean excuteMonitor(Integer minute , String reg)
{
boolean isHavePrint = false;
/* 载入并获取mq配置信息 */
ContextModel contextModel = monitorContext.getContextModel();
List<MQServerModel> serverList = contextModel.getMqServerModel();
/* 轮询每个server和其下的每个MQManager */
for (MQServerModel mqServerModel : serverList)
{
String ip = mqServerModel.getIp();
List<MQQueueManagerModel> qmList = mqServerModel.getQueueManagerModelList();
if(excuteMonitorQM(ip, qmList , minute , reg) == true)
isHavePrint = true;
}
return isHavePrint;
}
@SuppressWarnings("deprecation")
private boolean excuteMonitorQM(String ip, List<MQQueueManagerModel> qmList , Integer minute , String reg)
{
long currentDate = new Date().getTime();
boolean isPrint = false;
for (MQQueueManagerModel mqQueueManagerModel : qmList)
{
QueueManagerMonitor qmm = new QueueManagerMonitor(ip , mqQueueManagerModel.getPort() ,
mqQueueManagerModel.getUsername() ,
mqQueueManagerModel.getPassword() ,
mqQueueManagerModel.getQueueManagerName());
MQQueueManager qm = null;
try {
qm = qmm.getQueueManager();
} catch (MQException e1) {
continue;
}
Print.printQM(qm.name);
try {
List<String> qs = qmm.getQueueNames(qm);
for (String qname : qs)
{
if(qname.indexOf("SYSTEM") == 0 || check(qname, reg) == false)
continue;
QueueMonitor qMonitor = new QueueMonitor(qname , qm);
int depth = qMonitor.getQueueDepthForQName();
if(depth > 0)
{
MQQueue queue = qMonitor.getBrowseQueueForQName();
QueueMonitorTotleModel totle = qMonitor.getQueueMonitorTotleMondelForEarliestQueue(queue);
totle.setMsgCount(depth);
if(minute == null || minute <= 0)
{
Print.printQueueMonitorTotle(totle);
continue;
}
long earliestDate = totle.getEarliestMsgDate().getTime();
long differenceDate = currentDate - earliestDate;
differenceDate = TimeUtil.getMinuteForMillisecond(differenceDate);
if(differenceDate >= minute)
{
Print.printQueueMonitorTotle(totle);
isPrint = true;
}
}
}
} catch (MQException e) {
// e.printStackTrace();
} catch (IOException e) {
// e.printStackTrace();
}
}
return isPrint;
}
/**
* 方法入口,
* 参数说明:
* 1、可传入两个参数,第一个参数必须填,用来匹配需要检查queue名称的正则表达式
* 2、只填一个参数,会将mq中所有q都检测一遍,并打印queue信息。
* 3、填写参数例如:args[1]=3,
* 那么会取q中最旧的一条msg,比对msg时间和当前系统时间,如果超过3分钟,会视为异常queue。将queue的信息打印,
* 并在轮询方法调用结束后抛出异常
*
* @author 王成(chengwangi@isoftstone.com)
* @date 2012-11-23 下午01:16:51
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception
{
// args = new String[1];
// args[0] = "(S\\d{5}_[0-9A-Z]{6}_HLC)|(HLC_[0-9A-Z]{6}_S\\d{5})";
String reg = args[0];
Integer minute = null;
if(args != null && args.length == 2)
minute = new Integer(args[1]);
MQMonitor m = new MQMonitor();
boolean isPrint = m.excuteMonitor(minute , reg);
if(isPrint == true && minute != null && minute > 0)
throw new Exception();
}
public static boolean check(String data , String reg)
{
//return data.matches("(S\\d{5}_[0-9A-Z]{6}_HLC)|(HLC_[0-9A-Z]{6}_S\\d{5})");
return data.matches("reg");
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
IBM_MQ_MONITOR
共42个文件
java:18个
class:18个
xml:2个
5星 · 超过95%的资源 需积分: 9 13 下载量 63 浏览量
2012-12-04
16:48:14
上传
评论
收藏 31KB RAR 举报
温馨提示
IBMMQ的各种访问方式,包括通过MQQueueManager获取queue列表
资源推荐
资源详情
资源评论
收起资源包目录
ibm_mq_monitor.rar (42个子文件)
ibm_mq_monitor
src
java
com
iss
context
model
MQQueueManagerModel.java 894B
ContextModel.java 298B
MQServerModel.java 593B
MQMonitorContext.java 568B
interfaces
IContext.java 115B
config
xml
XmlConfigLoader.java 2KB
XmlLoader.java 728B
interfaces
IConfigParser.java 150B
parser
MQServerParser.java 494B
MQQueueManagerParser.java 994B
ConfigLoader.java 1005B
Register.java 379B
ibm
monitor
QueueMonitor.java 4KB
model
QueueMonitorTotleModel.java 1KB
util
TimeUtil.java 473B
Print.java 1KB
MQMonitor.java 5KB
QueueManagerMonitor.java 2KB
config
ibm_mq.xml 3KB
bin
com
iss
context
model
MQQueueManagerModel.class 1KB
MQServerModel.class 1KB
ContextModel.class 658B
Register.class 622B
interfaces
IContext.class 145B
config
ConfigLoader.class 1KB
xml
XmlConfigLoader.class 3KB
XmlLoader.class 1KB
interfaces
IConfigParser.class 203B
parser
MQQueueManagerParser.class 1KB
MQServerParser.class 899B
MQMonitorContext.class 1KB
ibm
monitor
model
QueueMonitorTotleModel.class 1KB
util
TimeUtil.class 812B
Print.class 3KB
QueueManagerMonitor.class 3KB
QueueMonitor.class 3KB
MQMonitor.class 5KB
ibm_mq.xml 3KB
.classpath 814B
.settings
org.eclipse.jdt.core.prefs 629B
org.eclipse.ltk.core.refactoring.prefs 137B
.project 390B
共 42 条
- 1
资源评论
- mwltodie9992022-11-02启动时的 两个参数是什么
- hellion22014-08-26很好,很完整的一个实例。
- 清风徐来1102012-12-19是一个完整可执行的项目,里面实现了mqmanager的监控,但是mq管理器是从xml事先写好的,不是从mq里面抓取的,其他功能十分好用。
wangdflx
- 粉丝: 1
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功