import java.lang.*;
import java.io.*;
import java.util.Properties;
/* import java.util.ResourceBundle; */ /* uncomment if using ResourceBundle */
/* to get program's input */
import java.util.Calendar;
import com.ibm.mq.*;
public class MQBrowser {
/****************************/
/* main program entry point */
/****************************/
public static void main( String[] args ) {
new MQBrowser().runBrowser(args);
}
private String qName;
/********************************************************/
/* This method does the actually browsing of the queue. */
/********************************************************/
public void runBrowser(String[] args) {
MQQueueManager qMgr = null;
MQQueue browseQueue = null;
int j = 0; /* used as a message counter */
if (args.length != 1) {
System.out.println("\nmust have one argument only: queueName\n");
System.exit(0);
}
qName = args[0];
System.out.println("\nMQBrowser.java - starts here");
System.out.println("**************************");
MQException.log = null; /* don't print out any exceptions */
try {
/*****************************/
/* Create a queue manager */
/*****************************/
// Create a connection to the QueueManager
System.out.println("Connecting to queue manager: "+qManager);
MQEnvironment.channel = System.getProperty ("message.chanel.name");
MQEnvironment.hostname = System.getProperty ("message.queue.server");
MQEnvironment.port = new Integer ((System.getProperty ("message.queue.port"))).intValue();
MQEnvironment.CCSID = new Integer ((System.getProperty ("message.queue.ccsid"))).intValue();
String queueManager= System.getProperty ("message.queue.manager");
qMgr = new MQQueueManager(queueManager);
/****************************************/
/* Open the queue in browse mode. */
/****************************************/
int openOptions = MQC.MQOO_BROWSE;
browseQueue = qMgr.accessQueue(qName, openOptions, null, null, null);
System.out.println("\n OPEN - '" + qName + "'\n\n");
/*****************************************************************/
/* Loop through the queue browsing the messages that are on it. */
/*****************************************************************/
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options = gmo.options + MQC.MQGMO_BROWSE_NEXT;
MQMessage myMessage = new MQMessage();
while (true) {
myMessage.clearMessage();
myMessage.correlationId = MQC.MQCI_NONE;
myMessage.messageId = MQC.MQMI_NONE;
browseQueue.get(myMessage, gmo);
j = j + 1;
System.out.println(" GET of message number " + j);
System.out.println("****Message descriptor****\n");
System.out.println(" StrucId : 'MD '"
+ " Version : " + myMessage.getVersion());
System.out.println(" Report : " + myMessage.report
+ " MsgType : " + myMessage.messageType);
System.out.println(" Expiry : " + myMessage.expiry
+ " Feedback : " + myMessage.feedback);
System.out.println(" Encoding : " + myMessage.encoding
+ " CodedCharSetId : " + myMessage.characterSet);
System.out.println(" Format : '" + myMessage.format + "'");
System.out.println(" Priority : " + myMessage.priority
+ " Persistence : " + myMessage.persistence);
System.out.print(" MsgId : ");
dumpHexId(myMessage.messageId);
System.out.print(" CorrelId : ");
dumpHexId(myMessage.correlationId);
System.out.println(" BackoutCount : " + myMessage.backoutCount);
System.out.println(" ReplyToQ : '"
+ myMessage.replyToQueueName + "'");
System.out.println(" ReplyToQMgr : '"
+ myMessage.replyToQueueManagerName + "'");
System.out.println(" ** Identity Context");
System.out.println(" UserIdentifier : '" + myMessage.userId + "'");
System.out.println(" Accounting Token :");
System.out.print(" ");
dumpHexId(myMessage.accountingToken);
System.out.println(" ApplIdentityData : '"
+ myMessage.applicationIdData + "'");
System.out.println(" ** Origin Context");
System.out.println(" PutApplType : '"
+ myMessage.putApplicationType + "'");
System.out.println(" PutApplName : '"
+ myMessage.putApplicationName + "'");
System.out.print(" PutDate : '");
System.out.print(myMessage.putDateTime.get(Calendar.YEAR));
int myMonth = myMessage.putDateTime.get(Calendar.MONTH) + 1;
if (myMonth < 10) {System.out.print("0");}
System.out.print(myMonth);
int myDay = myMessage.putDateTime.get(Calendar.DAY_OF_MONTH);
if (myDay < 10) {System.out.print("0");}
System.out.print(myDay);
System.out.print("' ");
System.out.print("PutTime : '");
int myHour = myMessage.putDateTime.get(Calendar.HOUR_OF_DAY);
if (myHour < 10) { System.out.print("0"); }
System.out.print(myHour);
int myMinute = myMessage.putDateTime.get(Calendar.MINUTE);
if (myMinute < 10) { System.out.print("0"); }
System.out.print(myMinute);
int mySecond = myMessage.putDateTime.get(Calendar.SECOND);
if (mySecond < 10) { System.out.print("0"); }
System.out.print(mySecond);
int myMsec = myMessage.putDateTime.get(Calendar.MILLISECOND);
myMsec = myMsec/10;
if (myMsec < 10) { System.out.print("0"); }
System.out.print(myMsec);
System.out.println("'");
System.out.println(" ApplOriginData : '"
+ myMessage.applicationOriginData + "'");
System.out.println();
System.out.print(" GroupId : ");
dumpHexId(myMessage.groupId);
System.out.println(" MsgSeqNumber : '"
+ myMessage.messageSequenceNumber + "'");
System.out.println(" Offset : '" + myMessage.offset + "'");
System.out.println(" MsgFlags : '"
+ myMessage.messageFlags + "'");
System.out.println(" OriginalLength : '"
+ myMessage.originalLength + "'");
System.out.println();
System.out.println("**** Message ****");
System.out.println();
System.out.println(" length - " + myMessage.getMessageLength()
+ " bytes\n");
dumpHexMessage(myMessage);
System.out.println();
System.out.println();
}
} catch (MQException ex) {
if (ex.reasonCode == MQException.MQRC_NO_MSG_AVAILABLE) {
System.out.println(" No more messages");
} else {
System.out.println("MQ error: Completion code " +
ex.completionCode + " Reason code " + ex.reasonCode);
}
} catch (java.io.IOException ex) {
System.out.println("An IO error occurred: " + ex);
}
try {
browseQueue.close();
System.out.println(" CLOSE of queue");
qMgr.disconnect();
System.out.println(" DISCONNECT from queue manager");
} catch (MQException ex) {
System.out.println("MQ error: Completion code " +
ex.completionCode + " Reason code " + ex.reasonCode);
}
System.out.println("**************************");
System.out.println("MQBrowser.java finished");
}
/*************************************************************/
/* This method will dump the text of the message in both hex */
/* and character format. */
/*************************************************************/
static void dumpHexMessage(MQMessage myMsg) throws java.io.IOException {
int DataLength = myMsg.getMessageLength();
int ch = 0;
int chars_this_line = 0;
int CHARS_PER_LINE = 16;
StringBuffer line_text = new StringBuffer();
line_text.setLength(0);
do {
chars_this_line = 0;
String myPos = new String(Integer.toHexString(ch));
for (int i=0; i < 8 - myPos.length(); i++) {
System.out.print("0");
}
System.out.print((String)(Integer.toHexString(ch)).toUpperCase() + ": ");
while ( (chars_this_line < CHARS_PER_LINE) &&
(ch < DataLength) ) {
if (chars_this_line % 2 == 0) {
System.out.print(" ");
}
char b = (char)(myMsg.readUnsignedByte() & 0xFF);
if (b < 0x10) {
System.out.print("0");
}
System.out.print((String)(Integer.toHexString(b)).toUpperCase());
/***********************************************/
/* If this is a printable character, print it. */
/* Otherwise, print a '.' as a placeholder. */
/***********************************************/
if (Character.isLetterOrDigit(b)
|| Character.getType(b) == Character.CONNECTOR_PUNCTUATION
|| Character.getType(b) == Character.CURRENCY_SYMBOL
|| Character.getType(b) == Character.MATH_SYMBOL
|| Character.getType(b) == Character.MODIFIER_SYMBOL
|| Character.getType(b) == Character.UPPERCASE_LETTER
|| Character.getType(b) == Character.SPACE_SEPARATOR
|| Character.getType(b) == Character.DASH_PUNCTUATION
|| Character.getType(b) == Character.START_PUNCTUATION
|| Character.getType(b) == Character.END_PUNCTUATION
|| Character.getType(b) == Character.OTHER_PUNCTUATION ) {
line_text.append(b);
} else {
line_text.append('.');
}
chars_this_line++;
ch++;
}
/*****************************************************/
/* pad with blanks to format the last line correctly */
/*****************************************************/
if (chars_this_line < CHARS_PER_LINE) {
for ( ;chars_this_line < CHARS_PER_LINE; chars_this_line++) {
if (chars_this_line % 2 == 0) System.out.print(" ");
System.out.print(" ");
line_text.append(' ');
}
}
System.out.println(" '" + line_text.toString() + "'");
line_text.setLength(0);
} while (ch < DataLength);
} /* end of dumpHexMessage */
/****************************************************/
/* Some of the MQ Ids are actually byte strings and */
/* need to be dumped in hex format. */
/****************************************************/
static void dumpHexId(byte[] myId) {
System.out.print("X'");
for (int i=0; i < myId.length; i++) {
char b = (char)(myId[i] & 0xFF);
if (b < 0x10) {
System.out.print("0");
}
System.out.print((String)(Integer.toHexString(b)).toUpperCase());
}
System.out.println("'");
}
}
分享到:
相关推荐
IBM MQ Explorer是IBM提供的一个强大的消息中间件管理工具,尤其适用于Windows 64位操作系统。这个9.2.1.0版本是专为IBM Message Queuing (MQ) 7.0及更高版本设计的,它提供了图形用户界面,使得MQ的配置、管理和...
IBM MQ,全称为IBM WebSphere MQ,是一款由IBM公司开发的消息中间件产品,它在企业级应用集成中扮演着至关重要的角色。IBM MQ 7.5.0是该产品的特定版本,专为Windows操作系统设计。这个版本包含了所有必要的组件和...
ibm-mq里面的ibm-mq-jmqi-7.5.RELEASE.jar下载,有需要的可以直接下载,亲自测过可以正常使用。
ibm-mq里面的ibm-mq-commonservices-7.5.RELEASE.jar下载,有需要的可以直接下载,亲自测过可以正常使用。
4. 安装完成后,可以在“开始”菜单找到IBM MQ Explorer的快捷方式。运行MQ Explorer,首次启动时可能需要设置连接参数,与安装时相同。 5. 探索和管理:MQ Explorer的界面分为多个视图,如资源视图、控制台视图等...
"IBM MQ编程模式中文版"是一份面向Java开发者的指南,旨在帮助他们理解和掌握如何利用MQSeries classes for Java进行有效的消息队列编程。 在IBM MQ的Java编程中,有几个核心概念和关键知识点: 1. **Message ...
4. **主题(Topics)与发布/订阅模式(Publish/Subscribe)**: IBM MQ支持基于主题的消息传递,允许多对多的通信。MQ Explorer允许用户定义主题,配置发布和订阅关系。 5. **安全性和认证(Security and ...
### IBMMQ消息序号-顺序详解 #### 1. 什么是MQ的消息序号? IBM Message Queue (简称MQ) 是一种消息中间件技术,用于在分布式应用程序之间传递数据。MQ中的消息序号(Message Sequence Number)是一项重要的机制,...
4. **com.ibm.mq.headers.jar**:这个库包含了处理MQ消息头所需的类,例如MQMessage、MQPutMessageOptions等,这些类用于设置和获取消息属性。 5. **com.ibm.mq.jms.jar**:JMS(Java Message Service)是Java平台...
IBM MQ(以前称为WebSphere MQ)是一种消息中间件,它允许应用程序在分布式环境中发送消息。这种技术被广泛应用于金融、医疗、电信等行业,因为其可靠的消息传递机制能够确保数据的安全性和一致性。 #### 二、IBM ...
Java调用IBM MQ(Message Queue)是企业级应用中常见的一种技术,用于实现应用程序之间的异步通信和消息传递。在Java环境中,IBM提供了专门的Java Connector(JMS API)来与MQ进行交互。本篇文章将深入讲解如何在...
4. **开发库和API**:IBM MQ支持多种编程语言,如Java、C、C++等。试用版通常会提供相应的开发库和API文档,帮助开发者集成IBM MQ到他们的应用程序中。 5. **许可证文件**:试用版会包含一个临时的许可证文件,允许...
IBM-MQ java所需要jar包,需要的自取,一共有aspectjrt,com.ibm.mq.fta,com.ibm.mq,com.ibm.mq.jms.Nojndi,com.ibm.mq.soap,com.ibm.mqetclient,com.ibm.mqjms,connector
总结来说,WebSphere MQ for Java编程涉及了与消息队列的交互,包括创建和配置触发器,以及编写Java程序来响应这些触发器。理解这些概念和步骤对于开发基于WebSphere MQ的应用程序至关重要,特别是那些依赖于实时...
4. **设置消息参数**:在MQ Sampler中,你可以定义消息的属性,如消息类型、消息ID、优先级等,并可以自定义消息内容。这使得测试更加灵活,可以模拟各种场景。 5. **监控和结果分析**:执行测试后,JMeter会收集...
IBM MQ(原名WebSphere MQ)是IBM提供的一款企业级的消息中间件,它允许应用程序在分布式环境中通过消息传递进行通信,而无需关心彼此的位置或运行时间。消息队列源码的分析有助于理解其内部工作原理,提高开发人员...
1. **MQSeries Java API**:IBM MQ提供了丰富的Java编程接口,使得开发人员可以轻松地集成消息队列功能到Java应用中。`com.ibm.mq.jar`是这些API的基础,它包含MQQueueManager、MQQueue、MQMessage等核心类,允许...
Java连接IBM WebSphere MQ 7处理队列信息所需jar包,从安装目录直接打的包。主要包括: /com.ibm.mq.commonservices.jar /com.ibm.mq.defaultconfig.jar /com.ibm.mq.fta.jar /com.ibm.mq.headers.jar /...
1. com.ibm.mq.jmqi-7.0.1.3.jar:这部分是IBM MQ的Java消息接口(JMS Interface)实现,提供了与IBM MQ服务器进行交互的API,使得开发者可以利用Java编程语言来操作消息队列,进行消息的发送和接收。 2. ...
在实际开发中,为了简化部署,通常会将这些jar包打包成一个或多个类库,如`ibm-mq-jar-with-dependencies.jar`,以便在项目中直接引用。这样可以避免因缺少依赖而导致的运行时错误,同时也方便管理和维护。 总的来...