`

IBM MQ example

阅读更多
2006-09-08

IBM MQ  example


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 8.0 Jar包

    public class MQExample { public static void main(String[] args) { try { int openOptions = CMQC.MQOO_INPUT_AS_Q_DEF | CMQC.MQOO_OUTPUT; MQQueueManager qMgr = new MQQueueManager("QMGR_NAME"); MQ...

    C# 实现消息的收发IBM WebSphere MQ 消息队列

    public class MQExample { public static void Main(string[] args) { // 从appconfig获取配置 string queueManager = ConfigurationManager.AppSettings["QueueManager"]; string host = ConfigurationManager...

    IBM WebSphere MQ 第二章

    ### IBM WebSphere MQ 第二章知识点详解 #### 2章:WebSphere MQ 的构成要素 在第一章中,我们概述了WebSphere MQ的基本概念及其在消息传递系统中的作用。本章节将深入探讨WebSphere MQ的核心组成部分——队列和...

    WebsphereMQ查看软件

    public class MQExample { public static void main(String[] args) throws Exception { // 创建MQConnectionFactory实例 MQConnectionFactory factory = new MQConnectionFactory(); // 设置队列管理器名称 ...

    MQ java编程

    在本文中,我们将深入探讨如何使用Java编程与IBM MQ(Message Queuing)进行交互,特别是如何实现客户端A作为消息发送方的功能。IBM MQ是一种企业级的消息中间件,它允许应用程序通过队列进行异步通信,确保消息的...

    MQ使用文档

    MQSeries(现在称为IBM MQ)是一款成熟的企业级消息传递系统,旨在为应用程序之间的通信提供可靠的基础。MQSeries支持多种编程流模式,每种模式都有其独特的应用场景。本文档将详细介绍MQSeries中的几种常见编程流...

    原IBM架构师梁岳传博士撰写的MQ技术文档,经典

    ### 运行示例 (Running the example) 文档还提到了运行示例的步骤,包括直接连接设置和间接连接设置。这些步骤对于确保MQ环境正确配置至关重要。 #### 直接连接设置 直接连接设置主要包括以下步骤: 1. **定义...

    MQjava基础编程.pdf

    WebSphere MQ,通常简称为MQ,是IBM提供的一种消息中间件,用于在分布式系统中可靠地传输消息。在Java环境中,MQ提供了与Java消息服务(JMS)接口的集成,使得Java开发者能够方便地发送和接收消息。本文档将探讨MQ ...

    Spring + JMS + MQ Connection

    在IT行业中,Spring框架...在实际项目中,可以根据MQ的具体实现(如ActiveMQ、RabbitMQ或IBM WebSphere MQ)调整ConnectionFactory的相关属性。在压缩包中的`Demo`可能包含了相关的代码示例,可以结合阅读以加深理解。

    jms-activemq-example:使用Apache ActiveMQ的Belajar JMS

    提供者,即面向消息的中间件或充当代理的应用程序,示例之一是Apache ActiveMQ,RabitMQ,Hive MQTT,IBM MQ,JBoss Messaging等。 客户端,它是充当消息的发送者或接收者的应用程序。 生产者/发布者,它是充当...

Global site tag (gtag.js) - Google Analytics