`
a3mao
  • 浏览: 562979 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

IBM MQ系列编程4--------浏览消息

阅读更多
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("'");
   }
}





分享到:
评论

相关推荐

    9.2.1.0-IBM-MQ-Explorer-Win64.zip(支持7.0之后)

    IBM MQ Explorer是IBM提供的一个强大的消息中间件管理工具,尤其适用于Windows 64位操作系统。这个9.2.1.0版本是专为IBM Message Queuing (MQ) 7.0及更高版本设计的,它提供了图形用户界面,使得MQ的配置、管理和...

    IBM MQ 7.5.0 windows版本-全部

    IBM MQ,全称为IBM WebSphere MQ,是一款由IBM公司开发的消息中间件产品,它在企业级应用集成中扮演着至关重要的角色。IBM MQ 7.5.0是该产品的特定版本,专为Windows操作系统设计。这个版本包含了所有必要的组件和...

    ibm-mq-jmqi-7.5.RELEASE.jar

    ibm-mq里面的ibm-mq-jmqi-7.5.RELEASE.jar下载,有需要的可以直接下载,亲自测过可以正常使用。

    ibm-mq-commonservices-7.5.RELEASE.jar

    ibm-mq里面的ibm-mq-commonservices-7.5.RELEASE.jar下载,有需要的可以直接下载,亲自测过可以正常使用。

    IBM MQ Explore windows下安装包

    4. 安装完成后,可以在“开始”菜单找到IBM MQ Explorer的快捷方式。运行MQ Explorer,首次启动时可能需要设置连接参数,与安装时相同。 5. 探索和管理:MQ Explorer的界面分为多个视图,如资源视图、控制台视图等...

    IBM MQ编程模式中文版

    "IBM MQ编程模式中文版"是一份面向Java开发者的指南,旨在帮助他们理解和掌握如何利用MQSeries classes for Java进行有效的消息队列编程。 在IBM MQ的Java编程中,有几个核心概念和关键知识点: 1. **Message ...

    IBM MQ Explorer

    4. **主题(Topics)与发布/订阅模式(Publish/Subscribe)**: IBM MQ支持基于主题的消息传递,允许多对多的通信。MQ Explorer允许用户定义主题,配置发布和订阅关系。 5. **安全性和认证(Security and ...

    IBMMQ消息序号-顺序

    ### IBMMQ消息序号-顺序详解 #### 1. 什么是MQ的消息序号? IBM Message Queue (简称MQ) 是一种消息中间件技术,用于在分布式应用程序之间传递数据。MQ中的消息序号(Message Sequence Number)是一项重要的机制,...

    IBM MQ 全部JAR包

    4. **com.ibm.mq.headers.jar**:这个库包含了处理MQ消息头所需的类,例如MQMessage、MQPutMessageOptions等,这些类用于设置和获取消息属性。 5. **com.ibm.mq.jms.jar**:JMS(Java Message Service)是Java平台...

    ibm mq客户端与服务端互连

    IBM MQ(以前称为WebSphere MQ)是一种消息中间件,它允许应用程序在分布式环境中发送消息。这种技术被广泛应用于金融、医疗、电信等行业,因为其可靠的消息传递机制能够确保数据的安全性和一致性。 #### 二、IBM ...

    java调用ibmmq最全版本jar包,包含connector

    Java调用IBM MQ(Message Queue)是企业级应用中常见的一种技术,用于实现应用程序之间的异步通信和消息传递。在Java环境中,IBM提供了专门的Java Connector(JMS API)来与MQ进行交互。本篇文章将深入讲解如何在...

    IBM-MQ-9.1.5-LINUX-X86-64-TRIAL.tar.gz

    4. **开发库和API**:IBM MQ支持多种编程语言,如Java、C、C++等。试用版通常会提供相应的开发库和API文档,帮助开发者集成IBM MQ到他们的应用程序中。 5. **许可证文件**:试用版会包含一个临时的许可证文件,允许...

    IBM-MQ-jar包-包含connector..zip

    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编程实例----实现MQ trigger---配置篇

    总结来说,WebSphere MQ for Java编程涉及了与消息队列的交互,包括创建和配置触发器,以及编写Java程序来响应这些触发器。理解这些概念和步骤对于开发基于WebSphere MQ的应用程序至关重要,特别是那些依赖于实时...

    JMETER插件,进行IBM MQ测试

    4. **设置消息参数**:在MQ Sampler中,你可以定义消息的属性,如消息类型、消息ID、优先级等,并可以自定义消息内容。这使得测试更加灵活,可以模拟各种场景。 5. **监控和结果分析**:执行测试后,JMeter会收集...

    IBMMQ消息队列源码

    IBM MQ(原名WebSphere MQ)是IBM提供的一款企业级的消息中间件,它允许应用程序在分布式环境中通过消息传递进行通信,而无需关心彼此的位置或运行时间。消息队列源码的分析有助于理解其内部工作原理,提高开发人员...

    com.ibm.mq.jar

    1. **MQSeries Java API**:IBM MQ提供了丰富的Java编程接口,使得开发人员可以轻松地集成消息队列功能到Java应用中。`com.ibm.mq.jar`是这些API的基础,它包含MQQueueManager、MQQueue、MQMessage等核心类,允许...

    IBM MQ7.5_jar包

    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 /...

    IBM MQ7.0.1.3.jar包

    1. com.ibm.mq.jmqi-7.0.1.3.jar:这部分是IBM MQ的Java消息接口(JMS Interface)实现,提供了与IBM MQ服务器进行交互的API,使得开发者可以利用Java编程语言来操作消息队列,进行消息的发送和接收。 2. ...

    访问 IBM MQ 服务所需要jar包

    在实际开发中,为了简化部署,通常会将这些jar包打包成一个或多个类库,如`ibm-mq-jar-with-dependencies.jar`,以便在项目中直接引用。这样可以避免因缺少依赖而导致的运行时错误,同时也方便管理和维护。 总的来...

Global site tag (gtag.js) - Google Analytics