IBM websphere MQ 消息发送与获取
一. 所需依赖包,安装 IBM websphere MQ 后,在安装目录下的 java 目录内
import java.io.IOException;
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.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
import com.ibm.mq.constants.CMQC;
import com.ibm.mq.constants.MQConstants; /**
* 客户端模式开发
*
* @author Geely
*
*/
public class MQTest1 { public static void main(String[] args) throws MQException, IOException { // 发送消息给队列
put(); // 从队列读取消息
get(); // 获取队列深度
getDepth(); } @SuppressWarnings("unchecked")
static void put() throws MQException, IOException { // 配置MQ服务器连接参数
MQEnvironment.hostname = "127.0.0.1";
MQEnvironment.port = 1414;
MQEnvironment.channel = "QM_ACK";
// MQEnvironment.userID = "";
// MQEnvironment.password = "";
// 设置队列管理器字符集 编码
MQEnvironment.CCSID = 1381; // 设置应用名称,方便服务器MQ 查看应用连接
MQEnvironment.properties.put(MQConstants.APPNAME_PROPERTY, "MQ Test By Java"); // 设置应用名称,方便服务器MQ 查看应用连接
MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES); // 创建实例,连接队列管理器
MQQueueManager queueManager = new MQQueueManager("QM",MQEnvironment.properties); // 以可写的方式访问队列管理器已定义的队列QUEUE1,当然也可以创建队列
MQQueue putQueue = queueManager.accessQueue("QUEUE_RECV", CMQC.MQOO_OUTPUT); // 新建并发送消息给队列
MQMessage myMessage = new MQMessage();
myMessage.expiry = -1; // 设置消息用不过期
String name = "MePlusPlus's 博客";
myMessage.writeUTF(name); // 使用默认的消息选项
MQPutMessageOptions pmo = new MQPutMessageOptions();
// 发送消息
putQueue.put(myMessage, pmo);
putQueue.close(); // 断开连接
queueManager.disconnect();
} @SuppressWarnings("unchecked")
static void get() throws MQException, IOException { // 配置MQ服务器连接参数
MQEnvironment.hostname = "127.0.0.1";
MQEnvironment.port = 1414;
MQEnvironment.channel = "QM_ACK";
// MQEnvironment.userID = "";
// MQEnvironment.password = "";
// 设置队列管理器字符集 编码
MQEnvironment.CCSID = 1381; // 设置应用名称,方便服务器MQ 查看应用连接
MQEnvironment.properties.put(MQConstants.APPNAME_PROPERTY, "MQ Test By Java"); // 设置应用名称,方便服务器MQ 查看应用连接
MQEnvironment.properties.put(CMQC.TRANSPORT_PROPERTY, CMQC.TRANSPORT_MQSERIES_BINDINGS); // 创建实例,连接队列管理器
MQQueueManager queueManager = new MQQueueManager("QM",MQEnvironment.properties); // 打开队列.
int openOptions = CMQC.MQOO_INPUT_AS_Q_DEF|CMQC.MQOO_OUTPUT|CMQC.MQOO_INQUIRE; // 以可读的方式访问队列管理器已定义的队列QUEUE1
// MQQueue getQueue = queueManager.accessQueue("QUEUE_RECV",CMQC.MQOO_INPUT_AS_Q_DEF);
MQQueue getQueue = queueManager.accessQueue("QUEUE_RECV", openOptions, null, null, null); MQGetMessageOptions gmo = new MQGetMessageOptions();
// Get messages under sync point control.
// 在同步点控制下获取消息.
//gmo.options = gmo.options + CMQC.MQGMO_SYNCPOINT;
// Wait if no messages on the Queue.
// 如果在队列上没有消息则等待.
//gmo.options = gmo.options + CMQC.MQGMO_WAIT;
// Fail if QeueManager Quiescing.
// 如果队列管理器停顿则失败.
//gmo.options = gmo.options + CMQC.MQGMO_FAIL_IF_QUIESCING;
// Sets the time limit for the wait.
// 设置等待的时间限制.
gmo.waitInterval = 3000; // 从队列读取消息
MQMessage theMessage = new MQMessage();
getQueue.get(theMessage, gmo); String name = theMessage.readUTF(); System.out.println(name);
getQueue.close(); // 断开连接
queueManager.disconnect();
} static void getDepth() throws MQException, IOException { Properties props = new Properties();
props .put("hostname", "127.0.0.1");
props .put("port", 1414); //端口号
props .put("channel", "QM_ACK"); //服务器连接通道
props .put("CCSID", 1381);
props .put("transport", "MQSeries"); // 创建实例,连接队列管理器
MQQueueManager queueManager = new MQQueueManager("QM",props ); // 打开队列.
int openOptions = CMQC.MQOO_INPUT_AS_Q_DEF|CMQC.MQOO_OUTPUT|CMQC.MQOO_INQUIRE;
// 以可读的方式访问队列管理器已定义的队列QUEUE1
MQQueue getQueue = queueManager.accessQueue("QUEUE_RECV", openOptions, null, null, null); MQGetMessageOptions gmo = new MQGetMessageOptions();
// Get messages under sync point control.
// 在同步点控制下获取消息.
// gmo.options = gmo.options + CMQC.MQGMO_SYNCPOINT;
// Wait if no messages on the Queue.
// 如果在队列上没有消息则等待.
// gmo.options = gmo.options + CMQC.MQGMO_WAIT;
// Fail if QeueManager Quiescing.
// 如果队列管理器停顿则失败.
// gmo.options = gmo.options + CMQC.MQGMO_FAIL_IF_QUIESCING; // Sets the time limit for the wait.
// 设置等待的时间限制.
gmo.waitInterval = 3000; int depth = getQueue.getCurrentDepth();
System.out.println("该队列当前的深度为:"+depth);
System.out.println("===========================");
while(depth-->0)
{
MQMessage msg = new MQMessage();// 要读的队列的消息
getQueue.get(msg, gmo);
System.out.println("消息的大小为:"+msg.getDataLength());
System.out.println("消息的内容:\n"+msg.readUTF());
System.out.println("---------------------------");
}
System.out.println("Finish!!!"); getQueue.close(); // 断开连接
queueManager.disconnect(); } }
JAVA从MQ读取消息的时候报错及解决
JAVA通过writeUTF将消息写入到MQ,再通过JAVA采用MQMessage读消息的方法readUTF()去读取的时候,就不会报错,可以正常读出来。但是如果采用在MQ资源管理器中插入测试消息或者是通过另外一台MQ服务器往当前MQ服务器通过远程队例写消息过来,通过JAVA读取出会错.
MQMessage mqmsg = new MQMessage();// 要读的队列的消息
getQueue.get(mqmsg, gmo); System.out.println("消息的大小为:" + mqmsg.getDataLength()); byte[] rawData = new byte[mqmsg.getMessageLength()]; // 先转byte
mqmsg.readFully(rawData); // 读出所有数据
String msg = new String(rawData); // byte转string
System.out.println("消息的内容:\n"+msg);
IBM websphere MQ 消息发送与获取的更多相关文章
- IBM WebSphere MQ介绍安装以及配置服务详解
首先介绍一下MQ MQ消息队列的简称是一种应用程序对应用程序的通信方法.说白了也就是通过队列的方式来对应用程序进行数据通信.而无需专用链接来链接它们. MQ的通讯方式 1.数据报的方式 Datagra ...
- IBM WebSphere MQ介绍安装以及配置服务详解(转)
首先介绍一下MQ MQ消息队列的简称是一种应用程序对应用程序的通信方法.说白了也就是通过队列的方式来对应用程序进行数据通信.而无需专用链接来链接它们. MQ的通讯方式 1.数据报的方式 Datagra ...
- IBM WebSphere MQ 7.5基本用法
一.下载7.5 Trial版本 http://www.ibm.com/developerworks/downloads/ws/wmq/ 这是下载网址,下载前先必须注册IBM ID,下载完成后一路Nex ...
- 使用JMS接口接入WebSphere MQ消息
在你的应用程序中利用IBM WebSphere MQ消息中间件提供Java消息服务开放接口. IBM WebSphere MQ(WMQ)是一套面向消息的中间件(message-oriented mid ...
- IBM WebSphere MQ 通道类型配置
IBM WebSphere MQ 通道类型配置 初学MQ,四种常见通道,windows下操作 目录 Sender--Receiver Server-Receiver Server-Requester ...
- IBM websphere MQ使用说明
百度文库: IBM websphere MQ使用说明 IBM MQ安装和配置
- IBM WebSphere MQ安装及配置详解
打开MQ安装程序,选择下一步,默认安装WebSphere MQ, 完成MQ的安装工作,启动WebSphere MQ, 服务器配置,选择新建队列管理器,创建名为 "mq"的队列管理器 ...
- 【RocketMQ】MQ消息发送
消息发送 首先来看一个RcoketMQ发送消息的例子: @Service public class MQService { @Autowired DefaultMQProducer defaultMQ ...
- IBM WebSphere MQ的oracle的jdbc
一.IBM WebSphere MQ7.0的jdbc支持数据库有: DB2 Informix Informix_With_Date_Format Microsoft_SQL_Server Oracle ...
随机推荐
- HTML+CSS网站开发兵书
<HTML+CSS网站开发兵书> 基本信息 作者: 高洪涛 丛书名: 程序员藏经阁 出版社:电子工业出版社 ISBN:9787121212369 上架时间:2013-8-26 出版日期:2 ...
- python的单元测试框架
1.unittest是Python内置的标准类库.它的API跟Java的JUnit..net的NUnit,C++的CppUnit很相似. 通过继承unittest.TestCase来创建一个测试用 ...
- iOS:视图切换的第一种方式:模态窗口
一.UIModalController:模态窗口(一个控制器模态出另一个控制器的模态窗口) 当我们在view controller A中模态显示view controller B的时候,A就充当pre ...
- DedeCms V5.6 plus/advancedsearch.php 任意sql语句执行漏洞
漏洞版本: DedeCms V5.6 漏洞描述: DedeCMS内容管理系统软件采用XML名字空间风格核心模板:模板全部使用文件形式保存,对用户设计模板.网站升级转移均提供很大的便利,健壮的模板标签为 ...
- C#和Java交互相关研究
之前总觉得C#和Java可以交互应用,但是由于时间以及其他方面的原因,一直没有调研.今天抽空搜了一下,终于折腾出来了. 以下是我自己就C#和Java整合的一些提问和分析,如果有不对的地方,请路过的各位 ...
- MySQL服务器安装完之后如何调节性能
原文作者: Peter Zaitsev原文来源: http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server ...
- 【算法】Logistic regression (逻辑回归) 概述
Logistic regression (逻辑回归)是当前业界比较常用的机器学习方法,用于估计某种事物的可能性.比如某用户购买某商品的可能性,某病人患有某种疾病的可能性,以及某广告被用户点击的可能性等 ...
- PLSQL初次登录oracle报错处理
server1上面装了oracle client ,也装了plsql,但是登录了以后,不显示database 和connect as 手工输入正确的用户名和database后报错如下 于是就取消登录 ...
- USD Series: Installation
Today I would like to talk is Unified Service Desktop. It was published in Dynamics CRM 2013 Spring ...
- 如何使用飞秋FeiQ实现两电脑通信(或传输文件)
如何使用飞秋FeiQ实现两电脑通信(或传输文件) 1. 在两天电脑上,分别按照飞秋FeiQ 我使用的绿色飞秋2013正式版 2. 使用一根网线,将两电脑的网口连接一起 3. 设置飞秋FeiQ的端口号不 ...