`

IBM MQ的java实现例子

    博客分类:
  • java
 
阅读更多

第一次接触MQ(Message Query)消息队列,就是往队列里面写消息和从队列里面读取消息两种方式

 

package com.bulain.wasmq;   
  
import org.apache.log4j.Logger;   
  
import java.io.InputStream;   
import java.util.Properties;   
  
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.MQQueue;   
import com.ibm.mq.MQQueueManager;   
  
//----------------------------------------------   
// ……   
public class Main {   
    /**  
     * Logger for this class  
     */  
    private static final Logger logger = Logger.getLogger(Main.class);   
       
    private String strExtraSendXmlFileName = "jndi.properties";   
    private static Properties props;   
    static {   
        props = new Properties();   
        props.put("mqHostName","10.240.13.81");   
        props.put("mqPort","1414");   
        props.put("mqCCSID","932");        
        props.put("mqUserName","mqadmin");   
        props.put("mqPassword","Art515940");   
        props.put("mqQManager","QM_mphch085");   
        props.put("mqChannel","S_mphch085");   
        props.put("mqLocalOutQueue","clq_default_mphch085");   
        props.put("mqLocalInQueue","clq_default_mphch085");        
    }   
       
  
    public static void main(String[] args) {   
        Main test = new Main();   
        test.send();   
        test.recieve();   
    }   
  
    public void send() {   
        // MQ?送   
        try {   
            // 建立MQ客?端?用上下文?境   
            MQEnvironment.hostname = props.getProperty("mqHostName"); // 服?器ip地址   
            MQEnvironment.port = Integer.parseInt(props.getProperty("mqPort")); // 服?器MQ服?端口   
            MQEnvironment.CCSID = Integer.parseInt(props.getProperty("mqCCSID")); // 服?器MQ服?使用的??   
            MQEnvironment.channel = props.getProperty("mqChannel"); // 服?器?接通道名   
            MQEnvironment.userID = props.getProperty("mqUserName"); // MQ服?用?名   
            MQEnvironment.password = props.getProperty("mqPassword");   
  
            // ?接?列管理器   
            MQQueueManager qMgr = new MQQueueManager(props.getProperty("mqQManager"));   
            int openOptions = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;   
            // 打?MQ?列   
            MQQueue q = qMgr.accessQueue(props.getProperty("mqLocalOutQueue"), openOptions);   
            //FileInputStream fins = new FileInputStream(new File(strExtraSendXmlFileName));   
            InputStream fins = ClassLoader.getSystemResourceAsStream(strExtraSendXmlFileName);   
            byte[] data = new byte[fins.available()];   
            fins.read(data);   
            fins.close();   
            MQMessage msg = new MQMessage();   
            msg.write(data);   
            // 放入消息   
            q.put(msg);   
            // ???列   
            q.close();   
            // ???列管理器   
            qMgr.disconnect();   
        } catch (MQException e) {   
            logger.error(e);   
            e.printStackTrace();   
        } catch (Exception e) {   
            logger.error(e);   
            e.printStackTrace();   
        }   
    }   
  
    public void recieve() {   
        // MQ接收   
        try {   
            // 建立MQ客?端?用上下文?境   
            MQEnvironment.hostname = props.getProperty("mqHostName"); // 服?器ip地址   
            MQEnvironment.port = Integer.parseInt(props.getProperty("mqPort")); // 服?器MQ服?端口   
            MQEnvironment.CCSID = Integer.parseInt(props.getProperty("mqCCSID")); // 服?器MQ服?使用的??   
            MQEnvironment.channel = props.getProperty("mqChannel"); // 服?器?接通道名   
            MQEnvironment.userID = props.getProperty("mqUserName"); // MQ服?用?名   
            MQEnvironment.password = props.getProperty("mqPassword");   
  
            // ?接?列管理器   
            MQQueueManager qMgr = new MQQueueManager(props.getProperty("mqQManager"));   
            int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_FAIL_IF_QUIESCING;   
            // 打?MQ?列   
            MQQueue q = qMgr.accessQueue(props.getProperty("mqLocalInQueue"), openOptions);   
  
            MQGetMessageOptions mgo = new MQGetMessageOptions();   
            mgo.options |= MQC.MQGMO_NO_WAIT;   
  
            MQMessage msg = new MQMessage();   
  
            if ((msg = fetchOneMsg(q)) != null) {   
                byte[] xmlData = new byte[msg.getDataLength()];   
                msg.readFully(xmlData);   
                logger.info(new String(xmlData));   
            }   
            // ???列   
            q.close();   
            // ???列管理器   
            qMgr.disconnect();   
        } catch (MQException e) {   
            logger.error(e);   
            e.printStackTrace();   
        } catch (Exception e) {   
            logger.error(e);   
            e.printStackTrace();   
        }   
    }   
  
    /**  
     * 从?列中取出一个消息  
     *   
     * @param q  
     *            ?列名称  
     * @return  
     * @throws Exception  
     */  
    private static MQMessage fetchOneMsg(MQQueue q) throws Exception {   
        MQGetMessageOptions mgo = new MQGetMessageOptions();   
        mgo.options |= MQC.MQGMO_NO_WAIT;   
        MQMessage msg = new MQMessage();   
        try {   
            // ?取消息   
            q.get(msg, mgo);   
        } catch (MQException e) {   
            return null;   
        }   
        return msg;   
    }   
}   

分享到:
评论

相关推荐

    IBM_MQ_JAVA程序例子

    在本主题中,我们重点关注IBM MQ与Java的集成,即"IBM_MQ_JAVA程序例子"。 首先,我们要理解的是IBM MQ的核心概念——队列管理器(Queue Manager),它是IBM MQ系统中的核心组件,负责处理消息的存储、路由和传递。...

    JAVA IBM MQ 接收、发送

    MQ系列是IBM提供的消息队列服务,它通过消息模型实现了应用之间的解耦。消息队列允许应用程序将数据作为消息放入队列,然后由其他应用程序在合适的时间取出处理,这极大地提高了系统的稳定性和可靠性。 在Java中,...

    mq.rar_MQ_ibm mq 实例代码_ibm mq 文件传输_ibm mqput怎么用_put

    在提供的压缩包文件中,`mq.java`可能是实现IBM MQ Java API的示例代码。IBM MQ提供了丰富的Java API,使得开发者可以通过编程方式轻松地进行消息的发送和接收。以下是一个简单的`put`操作示例: ```java import ...

    IBM MQ 应答队列

    在编程时,你可以使用IBM MQ的Java API来操作这些队列和消息。例如,你可以创建一个`Message`对象,设置其`report`属性为`MQRO_COA`或`MQRO_COD`,然后将这个消息放入发送队列。IBM MQ的Java API会负责处理消息的...

    IBM MQ 8.0 Jar包

    "IBM MQ 8.0 Jar包"正是为了这个目的,包含了运行和构建与IBM MQ 8.0版本兼容的Java应用所需的类库。 这个压缩包文件包含了以下几个关键部分: 1. **lib**:这是一个包含32位(或i386架构)JAR文件的目录。这些...

    IBM MQ Demo

    通过IBM MQ Demo,开发者可以学习如何在实际场景中使用消息队列,例如实现系统间的解耦,提高应用程序的响应速度,以及实现故障恢复策略。此外,IBM MQ Demo还可以帮助开发者理解如何将IBM MQ集成到现有系统中,如...

    IBM websphere MQ 多种代码事例

    在“IBM WebSphere MQ 多种代码事例”中,我们可以预期包含多个示例,这些示例可能涵盖使用不同编程语言(如Java、C、C++等)与MQ交互的各种场景。以下是一些可能的知识点: 1. **MQ安装与配置**:首先,你需要理解...

    jms-spring3-ibmmq:JMS 1.0.2 与 Spring 3.2.x 和 IBM MQ

    本项目"jms-spring3-ibmmq"是关于如何在Spring 3.2.x框架下集成JMS 1.0.2版本和IBM MQ的一个实例教程。 1. **JMS 1.0.2 知识点**: - JMS 是Java平台用于企业级应用间消息传递的API,支持点对点(Point-to-Point,...

    WebSphere MQ Using Java

    该书适用于 IBM WebSphere MQ Version 6.0 及其后续版本,包括 IBM WebSphere MQ for z/OS Version 6.0。书中详细阐述了如何使用 Java 接口与 WebSphere MQ 进行交互,为开发人员提供了深入的技术指导。 #### 二、...

    MQ Using Java

    IBM提供了多个样本应用,用以演示如何使用WebSphere MQ Java类。通过运行这些样本应用,开发者可以验证自己的环境配置是否正确,并学习到实际的编码技巧。 ##### (三)解决WebSphere MQ基础Java问题 在实践中,...

    MQ发送消息源代码

    在本主题中,我们将聚焦于“MQ发送消息”的源代码实现,特别是与Java编程语言和IBM的WebSphere MQ(也称为IBMMQ)相关的知识。 首先,我们需要理解MQ的基本概念。消息队列是一种中间件,它接收来自生产者的消息,并...

    MQ消息队列实例

    在Java中,我们可以使用多种库来与MQ进行交互,如Apache ActiveMQ、RabbitMQ、IBM WebSphere MQ等。本实例将主要探讨Java向MQ发送消息的三种常见方法。 1. **JMS(Java Message Service)接口** JMS是Java平台定义...

    IBM WebSphere MQ 7.5基本用法

    学习IBM WebSphere MQ 7.5的基本用法对于理解消息中间件的工作原理和实现在分布式系统中的应用至关重要。通过深入研究和实践,你可以更好地掌握如何在企业环境中利用WMQ实现可靠、高效的数据交换。

    0101_tsh银行.rar

    这个“0101_tsh银行.rar”压缩包显然包含了与IBM MQ服务器相关的Java接口调用代码,使得开发者能够通过编程的方式与MQ服务进行交互,从而实现数据的获取和发送。 首先,我们要理解IBM MQ的基本概念。IBM MQ提供了一...

    WebSphere MQ开发JMS

    【WebSphere MQ开发JMS】涉及的关键知识点包括Java消息服务(JMS)、Enterprise JavaBean (EJB)、无状态会话Bean(Stateless Session Bean,SSB)、消息驱动Bean(Message-Driven Bean,MDB)、Java Naming and ...

    IBM WEBSPHERE MQ 客户端--服务器端安装配置.doc

    以下是一个使用IBM MQ Java API的简单客户端示例,展示了如何连接到服务器并发送消息: ```java import com.ibm.mq.*; public class Client { public static void main(String[] args) { String hostName = "192...

    WebsphereMQ查看软件

    WebsphereMQ,又称为IBM MQ,是一款由IBM开发的消息中间件,用于在不同系统、应用之间传递消息,实现异构环境下的数据通信。这款软件是企业级集成的关键组件,确保了数据传输的可靠性和安全性。 在使用WebsphereMQ...

    MQ本机实现两个队列管理器消息传递.doc

    5. **程序实现**:通过Java API(如com.ibm.mq.*包)进行消息的put和get操作。在Java代码中,可以看到如何设置主机名、通道、队列管理器和队列名称,以及建立MQQueueManager实例,使用MQQueue对象进行消息的投入和...

    MQjava基础编程.pdf

    总的来说,MQ Java基础编程涉及到Java客户端的创建、JMS与MQ之间的消息转换、在WebSphere Application Server中的配置,以及使用IBM提供的Java API进行消息操作。通过这个基础,你可以构建更复杂的应用,利用MQ实现...

Global site tag (gtag.js) - Google Analytics