`

MQ test in JAVA

    博客分类:
  • MQ
 
阅读更多

import java.io.IOException; 
import com.ibm.mq.MQC; 
import com.ibm.mq.MQEnvironment; 
import com.ibm.mq.MQException; 
import com.ibm.mq.MQGetMessageOptions; 
import com.ibm.mq.MQMessage; 
import com.ibm.mq.MQPutMessageOptions; 
import com.ibm.mq.MQQueue; 
import com.ibm.mq.MQQueueManager; 
 
public class MessageByMQ{ 
     //定义队列管理器和队列的名称 
     private static String qmName;  
     private static String qName; 
     private static MQQueueManager qMgr; 
     static{ 
         //设置环境: 
         //MQEnvironment中包含控制MQQueueManager对象中的环境的构成的静态变量,MQEnvironment的值的设定会在MQQueueManager的构造函数加载的时候起作用, 
         //因此必须在建立MQQueueManager对象之前设定MQEnvironment中的值. 
         MQEnvironment.hostname="10.24.1.180";          //MQ服务器的IP地址       
         MQEnvironment.channel="S_FENGLB";              //服务器连接的通道 
         MQEnvironment.CCSID=1381;                      //服务器MQ服务使用的编码1381代表GBK、1208代表UTF(Coded Character Set Identifier:CCSID) 
         MQEnvironment.port=1414;                       //MQ端口 
         qmName = "QM_FENGLB";                          //MQ的队列管理器名称 
         qName = "testQ";                               //MQ远程队列的名称 
         try { 
             //定义并初始化队列管理器对象并连接  
             //MQQueueManager可以被多线程共享,但是从MQ获取信息的时候是同步的,任何时候只有一个线程可以和MQ通信。 
            qMgr = new MQQueueManager(qmName); 
        } catch (MQException e) { 
             // TODO Auto-generated catch block 
             System.out.println("初使化MQ出错"); 
             e.printStackTrace(); 
         }  
      } 
      /**
       * 往MQ发送消息
       * @param message
       * @return
       */ 
      public static int sendMessage(String message){ 
          int result=0; 
          try{    
              //设置将要连接的队列属性 
              // Note. The MQC interface defines all the constants used by the WebSphere MQ Java programming interface  
              //(except for completion code constants and error code constants). 
              //MQOO_INPUT_AS_Q_DEF:Open the queue to get messages using the queue-defined default. 
              //MQOO_OUTPUT:Open the queue to put messages. 
              /*目标为远程队列,所有这里不可以用MQOO_INPUT_AS_Q_DEF属性*/ 
              //int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT; 
              /*以下选项可适合远程队列与本地队列*/ 
              int openOptions = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING; 
              //连接队列  
              //MQQueue provides inquire, set, put and get operations for WebSphere MQ queues.  
              //The inquire and set capabilities are inherited from MQManagedObject.  
             /*关闭了就重新打开*/ 
             if(qMgr==null || !qMgr.isConnected()){ 
                 qMgr = new MQQueueManager(qmName); 
             } 
              MQQueue queue = qMgr.accessQueue(qName, openOptions);           
              //定义一个简单的消息 
              MQMessage putMessage = new MQMessage();  
              //将数据放入消息缓冲区 
              putMessage.writeUTF(message);   
              //设置写入消息的属性(默认属性) 
              MQPutMessageOptions pmo = new MQPutMessageOptions();            
              //将消息写入队列  
             queue.put(putMessage,pmo);  
              queue.close(); 
          }catch (MQException ex) {  
              System.out.println("A WebSphere MQ error occurred : Completion code "  
             + ex.completionCode + " Reason code " + ex.reasonCode);  
              ex.printStackTrace(); 
         }catch (IOException ex) {  
              System.out.println("An error occurred whilst writing to the message buffer: " + ex);  
         }catch(Exception ex){ 
              ex.printStackTrace(); 
          }finally{ 
              try { 
                 qMgr.disconnect(); 
             } catch (MQException e) { 
                 e.printStackTrace(); 
             } 
           } 
          return result; 
      } 
      /**
       * 从队列中去获取消息,如果队列中没有消息,就会发生异常,不过没有关系,有TRY...CATCH,如果是第三方程序调用方法,如果无返回则说明无消息
       * 第三方可以将该方法放于一个无限循环的while(true){...}之中,不需要设置等待,因为在该方法内部在没有消息的时候会自动等待。
       * @return
       */ 
      public static String getMessage(){ 
          String message=null; 
          try{             
              //设置将要连接的队列属性 
              // Note. The MQC interface defines all the constants used by the WebSphere MQ Java programming interface  
              //(except for completion code constants and error code constants). 
              //MQOO_INPUT_AS_Q_DEF:Open the queue to get messages using the queue-defined default. 
              //MQOO_OUTPUT:Open the queue to put messages. 
              int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT; 
              MQMessage retrieve = new MQMessage(); 
              //设置取出消息的属性(默认属性) 
              //Set the put message options.(设置放置消息选项)  
              MQGetMessageOptions gmo = new MQGetMessageOptions();  
              gmo.options = gmo.options + MQC.MQGMO_SYNCPOINT;//Get messages under sync point control(在同步点控制下获取消息)  
              gmo.options = gmo.options + MQC.MQGMO_WAIT;  // Wait if no messages on the Queue(如果在队列上没有消息则等待)  
              gmo.options = gmo.options + MQC.MQGMO_FAIL_IF_QUIESCING;// Fail if Qeue Manager Quiescing(如果队列管理器停顿则失败)  
              gmo.waitInterval = 1000 ;  // Sets the time limit for the wait.(设置等待的毫秒时间限制)  
              /*关闭了就重新打开*/ 
             if(qMgr==null || !qMgr.isConnected()){ 
                 qMgr = new MQQueueManager(qmName); 
             } 
              MQQueue queue = qMgr.accessQueue(qName, openOptions);  
              // 从队列中取出消息 
              queue.get(retrieve, gmo); 
              message = retrieve.readUTF();   
              System.out.println("The message is: " + message);  
              queue.close(); 
          }catch (MQException ex) {  
             System.out.println("A WebSphere MQ error occurred : Completion code "  
              + ex.completionCode + " Reason code " + ex.reasonCode);  
          }catch (IOException ex) {  
              System.out.println("An error occurred whilst writing to the message buffer: " + ex);  
          }catch(Exception ex){ 
              ex.printStackTrace(); 
          }finally{ 
              try { 
                 qMgr.disconnect(); 
             } catch (MQException e) { 
                 e.printStackTrace(); 
             } 
         } 
          return message; 
      } 
      public static void main(String args[]) { 
          /*下面两个方法可同时使用,也可以单独使用*/ 
          sendMessage("this is a test"); 
          //getMessage(); 
      } 
 } 

分享到:
评论

相关推荐

    JAVA连接IBM MQ代码

    在IT行业中,Java是一种广泛应用的编程语言,而IBM MQ(原名WebSphere MQ)是IBM提供的消息中间件,用于在不同系统之间可靠地传递数据。本文将深入探讨如何使用Java来连接IBM MQ,以实现跨平台的信息交换。 首先,...

    MQ6.0_JAVA编程

    《MQ6.0_JAVA编程》是一本专为Java开发者设计的关于IBM WebSphere MQ(简称MQ)6.0版本的编程指南。本书深入浅出地介绍了如何在Java环境中使用MQ进行消息传递,帮助读者掌握MQ的核心概念和技术,提升应用程序的可靠...

    JAVA IBM MQ 接收、发送

    本篇文章将深入探讨如何使用Java API与IBM MQ进行交互,包括接收和发送消息的实例。 首先,我们需要理解IBM MQ的基本概念。MQ系列是IBM提供的消息队列服务,它通过消息模型实现了应用之间的解耦。消息队列允许应用...

    MQ using java资料

    - **WebSphere MQ classes for Java Message Service** 是一种基于 Java Message Service (JMS) 规范的接口,使得 Java 应用程序能够通过 JMS API 与 WebSphere MQ 进行交互。 #### 1.2 使用对象 - **WebSphere MQ ...

    IBM MQ 连接方法java代码

    IBM MQ经常被一些政府公共部门,银行等企业用来做数据传输和报文收发,在互联网应用的开发中较少见到,资源为MQjava 代码

    MQ_TEST.zip

    《MQ测试工具详解——以MQ_TEST.zip为例》 在信息技术领域,消息队列(Message Queue,简称MQ)是一种常用于应用程序之间异步通信的技术。它允许应用程序将消息发送到一个中间队列,然后由其他应用程序在合适的时间...

    MQ6.0使用Java编程

    在本篇内容中,我们将深入探讨MQ 6.0版本与Java编程的集成,以及如何在Java环境下进行MQ的开发。 1. **MQ基础概念**: - **消息队列(Message Queue)**:MQ的核心概念,它是一种存储和转发消息的数据结构。消息被...

    Java下操作IBM Websphere MQ的项目案例

    在这个“Java下操作IBM Websphere MQ的项目案例”中,我们将探讨如何使用Java语言与IBM MQ进行交互,以及如何在Eclipse开发环境中设置和运行相关的项目。 首先,我们需要了解IBM MQ的基本概念。IBM MQ提供了一个...

    java访问IBM MQ SSL加密通道

    描述了java程序代码去访问MQ的SSL加密的通道。如何配置JKS,如何配置MQ服务器的SSL秘钥库,如何配置证书制作证书和秘钥库。主要是如何编写java代码去访问SSL通道并取到数据。

    java IBM MQ 7.5.0 生产者和消费者实例

    Java IBM MQ 7.5.0 是IBM提供的消息中间件,用于在分布式系统中可靠地传输数据。MQ(Message Queue)允许应用程序通过消息传递进行通信,而不是直接调用彼此,从而提高了系统的可扩展性和解耦性。MQTT(Message ...

    与MQ通讯的完整JAVA程序

    与MQ通讯的完整JAVA程序,想学mq 的java开发的很有借鉴意义的

    JAVA实现MQ发送接收消息详解

    // Define a simple WebSphere MQ message, and write some text in UTF // format.. MQMessage putMessage = new MQMessage(); putMessage.writeUTF("TEST"); // specify the message options... ...

    MQ java 编程指南

    《MQ Java编程指南》是一本面向Java开发者的深入解析消息队列(MQ)技术的专业书籍。消息队列作为分布式系统中的重要组件,用于解耦应用、实现异步处理以及提高系统的可扩展性。本书旨在帮助Java开发者熟练掌握如何...

    IBM MQ JAVA开发包.rar_com.ibm.mqbind.jar_java mq_mq Java jar_mq jav

    IBM MQ Java API提供了丰富的类和接口,使得Java开发者可以轻松地与MQ队列管理器进行交互,创建、读取、更新和删除消息。`com.ibm.mqbind.jar`是IBM MQ Java绑定库,它包含了处理消息绑定和数据转换所需的类。在开发...

    学习使用WebSphere MQ for Java编程

    WebSphere MQ for Java 是 IBM 提供的一个用于 Java 开发者集成消息传递功能的库,它使得 Java 应用程序能够直接与 WebSphere MQ Server 交互,或者作为客户端连接到 WebSphere MQ 服务。这个框架提供了可靠的、跨...

    java客户端从MQ队列接收消息的三种方法

    在Java中,与Message Queuing (MQ) 交互是企业级应用中常见的需求,用于解耦应用程序并提高系统的可扩展性。本篇文章将详细介绍三种不同的方法,帮助Java客户端从MQ队列接收消息。 1. **IBM WebSphere MQ JMS API**...

    WebSphere MQ Using Java

    ### WebSphere MQ 使用 Java 的关键知识点 #### 一、WebSphere MQ 概述与 Java 集成 **WebSphere MQ**(以下简称 WMQ)是一款由 IBM 开发的消息队列中间件,它允许应用程序在分布式环境中通过消息进行通信。WMQ ...

    IBM MQ的java相关jar

    在这个场景中,"IBM MQ的java相关jar"指的是IBM MQ客户端中用于Java编程的库文件,这些JAR文件包含了必要的API,使得Java开发者可以方便地在应用中集成IBM MQ的功能。 IBM MQ Java API主要包括以下关键组件: 1. *...

    MQ工具类java

    包含了IBM的MQ初始化,发送,接收的工具类,方便极了,可直接放入到项目中。

Global site tag (gtag.js) - Google Analytics