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();
}
}
- 浏览: 614437 次
- 性别:
- 来自: 深圳
最新评论
-
向往前途:
{"total":8,"page ...
struts2+spring+hibernate+json+jquery+flexigrid集成和在集成过程中需要注意的问题 -
MichealChao:
maven + jetty报错了JRebel: Failed ...
JRebel热部署简单安装,附破解版JRebel.jar -
MichealChao:
JRebel: Failed to start a plugi ...
JRebel热部署简单安装,附破解版JRebel.jar -
云之遥:
很好,很强大!
JRebel热部署简单安装,附破解版JRebel.jar -
li_qian_long:
请问这是哪个版本的?
JRebel热部署简单安装,附破解版JRebel.jar
相关推荐
在IT行业中,Java是一种广泛应用的编程语言,而IBM MQ(原名WebSphere MQ)是IBM提供的消息中间件,用于在不同系统之间可靠地传递数据。本文将深入探讨如何使用Java来连接IBM MQ,以实现跨平台的信息交换。 首先,...
《MQ6.0_JAVA编程》是一本专为Java开发者设计的关于IBM WebSphere MQ(简称MQ)6.0版本的编程指南。本书深入浅出地介绍了如何在Java环境中使用MQ进行消息传递,帮助读者掌握MQ的核心概念和技术,提升应用程序的可靠...
本篇文章将深入探讨如何使用Java API与IBM MQ进行交互,包括接收和发送消息的实例。 首先,我们需要理解IBM MQ的基本概念。MQ系列是IBM提供的消息队列服务,它通过消息模型实现了应用之间的解耦。消息队列允许应用...
- **WebSphere MQ classes for Java Message Service** 是一种基于 Java Message Service (JMS) 规范的接口,使得 Java 应用程序能够通过 JMS API 与 WebSphere MQ 进行交互。 #### 1.2 使用对象 - **WebSphere MQ ...
IBM MQ经常被一些政府公共部门,银行等企业用来做数据传输和报文收发,在互联网应用的开发中较少见到,资源为MQjava 代码
《MQ测试工具详解——以MQ_TEST.zip为例》 在信息技术领域,消息队列(Message Queue,简称MQ)是一种常用于应用程序之间异步通信的技术。它允许应用程序将消息发送到一个中间队列,然后由其他应用程序在合适的时间...
在本篇内容中,我们将深入探讨MQ 6.0版本与Java编程的集成,以及如何在Java环境下进行MQ的开发。 1. **MQ基础概念**: - **消息队列(Message Queue)**:MQ的核心概念,它是一种存储和转发消息的数据结构。消息被...
在这个“Java下操作IBM Websphere MQ的项目案例”中,我们将探讨如何使用Java语言与IBM MQ进行交互,以及如何在Eclipse开发环境中设置和运行相关的项目。 首先,我们需要了解IBM MQ的基本概念。IBM MQ提供了一个...
描述了java程序代码去访问MQ的SSL加密的通道。如何配置JKS,如何配置MQ服务器的SSL秘钥库,如何配置证书制作证书和秘钥库。主要是如何编写java代码去访问SSL通道并取到数据。
Java IBM MQ 7.5.0 是IBM提供的消息中间件,用于在分布式系统中可靠地传输数据。MQ(Message Queue)允许应用程序通过消息传递进行通信,而不是直接调用彼此,从而提高了系统的可扩展性和解耦性。MQTT(Message ...
与MQ通讯的完整JAVA程序,想学mq 的java开发的很有借鉴意义的
// 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编程指南》是一本面向Java开发者的深入解析消息队列(MQ)技术的专业书籍。消息队列作为分布式系统中的重要组件,用于解耦应用、实现异步处理以及提高系统的可扩展性。本书旨在帮助Java开发者熟练掌握如何...
IBM MQ Java API提供了丰富的类和接口,使得Java开发者可以轻松地与MQ队列管理器进行交互,创建、读取、更新和删除消息。`com.ibm.mqbind.jar`是IBM MQ Java绑定库,它包含了处理消息绑定和数据转换所需的类。在开发...
WebSphere MQ for Java 是 IBM 提供的一个用于 Java 开发者集成消息传递功能的库,它使得 Java 应用程序能够直接与 WebSphere MQ Server 交互,或者作为客户端连接到 WebSphere MQ 服务。这个框架提供了可靠的、跨...
在Java中,与Message Queuing (MQ) 交互是企业级应用中常见的需求,用于解耦应用程序并提高系统的可扩展性。本篇文章将详细介绍三种不同的方法,帮助Java客户端从MQ队列接收消息。 1. **IBM WebSphere MQ JMS API**...
### WebSphere MQ 使用 Java 的关键知识点 #### 一、WebSphere MQ 概述与 Java 集成 **WebSphere MQ**(以下简称 WMQ)是一款由 IBM 开发的消息队列中间件,它允许应用程序在分布式环境中通过消息进行通信。WMQ ...
在这个场景中,"IBM MQ的java相关jar"指的是IBM MQ客户端中用于Java编程的库文件,这些JAR文件包含了必要的API,使得Java开发者可以方便地在应用中集成IBM MQ的功能。 IBM MQ Java API主要包括以下关键组件: 1. *...
包含了IBM的MQ初始化,发送,接收的工具类,方便极了,可直接放入到项目中。