MQ--API总结
研究MQ很长时间了, 每个类,方法,都查了很长时间,在此总结一下!
Java编写访问MQ的程序
1、MQQueueManager―――队列管理器访问类
常用方法:
public MQQueueManager(String queueManagerName)―――建立一个管理器实例
创建队列管理器有两种方式:
1:绑定方式,这种方式要求MQ服务器与应用程序同属一台服务器,效率比较高。
2:客户机方式:这种方式应用程序和MQ服务器可以不在同一台服务器上,但是要考虑到MQ权限的问题,尤其是MQ7.5之后,权限变的很复杂,慎重对待。
注:如果使用绑定的方式则可以直接创建一个新的队列管理器实例。但是在某些平台下这样直接创建会出错,必须采用MQClient的方式进行连接。此时需要先定义服务通道,端口,服务名等环境变量,再创建一个队列管理器实例。如:
- MQEnvironment.hostname = "IP地址";
- MQEnvironment.channel = "channelname";
- MQEnvironment.port = port ;
- MQEnvironment.CCSID = CCSID;
- MQQueueManager qMgr = new MQQueueManager(hostname);
其中hostname表示队列管理器所在的机器地址(一般在本地则填localhost或127.0.0.1)。
port就是队列管理器的侦听端口。
Channel定义访问的服务器通道名(需要自己在队列管理器中先定义,其方法类似与一般通道的定义,不过类型是服务器通道)
public bool isConnected()―――返回队列管理器是否在连接状态
public synchronized void disconnect()―――断开队列管理器的连接
2、MQQueue―――队列访问类
常用方法:
通常MQQueue实例的生成通过调用MQQueueManager的accessQueue方法类实例化。
public synchornized MQQueue accessQueue(String QueueName,int openOptions)―――返回一个连接队列的实例(类名为:MQQueue)
常用方法:
public synchronized void get(MQMessage message,MQGetMessageOptions gmo)―――从队列管理器读取一条
消息通过message实例返回。MQGetMessageOptions的用法下面再详述。
public synchronized void put(MQMessage message,MQPutMessageOptions pmo)―――往队列管理器放入一条
消息 MQPutMessageOptions的用法下面再详述
public synchronized void close()―――关闭队列的连接
3.openOptions---队列的打开方式
常用值有:
MQC.MQOO_FAIL_IF_QUIESCING―――如果队列管理器停止则返回失败
MQC.MQOO_OUTPUT――――以写方式打开队列
MQC.MQOO_INPUT_AS_Q_DEF―――以队列默认读取方式打开队列 使用的时候可以采用与操作来实现多种打开队列方式,
MQC.MQOO_BROWSE;――――以浏览方式打开队列
MQC.MQGMO_BROWSE_NEXT; ――――浏览下一个消息
如:
int openOptions = MQC.MQOO_FAIL_IF_QUIESCING | MQC.MQOO_OUTPUT | MQC.MQOO_INPUT_AS_Q_DEF; 表示以读、写方式打开队列
4.MQMessage―――消息操作类 常用方法:
public MQMessage()―――默认构造函数
public int getDataLength()―――返回可读取的消息的长度(以byte作为单位)
public void readFully(byte b[])―――读取消息到数组b中,长度以b的数组长度为准
属性:
format = MQC.MQFMT_STRING;
msg.characterSet = ccsid;//字符集
msg.encoding = ccsid;//写的字符集
一般读取消息的操作为:
- MQMessage message = new MQMessage(); ….
- int length = message.getDataLength();
- byte buffer[] = new byte[length];
- message.readFully(buffer);
public void write(byte b[])―――把指定的字节数组写入消息
一般写消息的操作为:
- byte[] buffer = “asdasdad”.getBytes();
- MQMessage message = new MQMessage(); ….
- message.write(buffer);
- queue.put(message….
5.MQGetMessageOptions―――取消息操作选项
常用方法:
public MQGetMessageOptions()―――默认构造函数
public int options―――操作选项(位操作)
public int matchOptions―――条件选项(按照某种条件获取消息)
public int waitInterval―――等待时长(单位:毫秒)仅当options选项有MQC.MQGMO_WAIT才有效
6.MQPutMessageOptions―――放消息操作选项
常用方法:
public MQPutMessageOptions()―――默认构造函数
public int options―――操作选项(位操作)
7.MQ自带连接池
MQ队列管理器有自己的连接池,可以使用连接池获得连接
我们可以使用的MQ自己的默认连接池
MQPoolToken token=MQEnvironment.addConnectionPoolToken();
这样就会把在本线程中对队列管理器的连接纳入到了MQ自带的线程管理机制中(qm.disconnect()实际上就是将qm的连接重新放回池中 qm= new MQQueueManager()会去池里找一个可用的连接赋给qm)
因为队列管理器是选择了侦听端口,可以使用netstat -an |grep 9004 看到连接到这个队列管理器上连接.
MQ--API总结的更多相关文章
- JAVA MQ API方式通信采用Binding MQ Server方式
package com.mqapi; /** * @modified by actorai E-mail:actorai@163.com * @version 创建时间:2010-9-15 * ...
- ActiveMQ学习(三)——MQ的通讯模式
1) 点对点通讯:点对点方式是最为传统和常见的通讯方式,它支持一对一.一对多.多对多.多对一等多种配置方式,支持树状.网状等多种拓扑结构. 2) 多点广播:MQ适用于不同类型的应用.其中重要的,也是正 ...
- MQ基本概念
MQ的基本概念 1) 队列管理器 队列管理器是MQ系统中最上层的一个概念,由它为我们提供基于队列的消息服务. 2) 消息 在MQ中,我们把应用程序交由MQ传输的数据定义为消息,我们可以定义消息的内容并 ...
- 消息中间件及WebSphere MQ入门(转载)
消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置.或在继续执行前不需要等待 ...
- MQ基础概念和介绍
一.中间件 MQ是一种中间件产品,至于什么是中间件,中间件能干什么,参见以下链接: http://baike.baidu.com/view/23710.htm 二.WebSphere MQ的原理 We ...
- trove design翻译
trove的设计 高水平的描述 trove的目的是支持单租户数据库,在一个nova的实例中.没有限制nova是如何配置的,因为trove与其他OpenStack组件纯粹通过API. Trove-api ...
- ActiveMQ-为什么需要消息中间件?
消息中间件的优势 UNIX的进程间通信就开始运用消息队列技术,一个进程将数据写入某个特定的队列中,其它进程可以读取队列中的数据,从而实现异步通信.对于如今的分布式系统,消息队列已经演变为独立的消息中间 ...
- Massive Collection Of Design Patterns, Frameworks, Components, And Language Features For Delphi
Developer beNative over on GitHub has a project called Concepts which is a massive collection of Del ...
- Rocket Mq 常用API 及简单运维
RocketMQ 常用API 消息 消息消费模式 消息消费模式由消费者来决定,可以由消费者设置MessageModel来决定消息模式. 消息模式默认为集群消费模式 consumer.setMessag ...
- Rabbit MQ 客户端 API 开发
项目开始 第一步首先需要引入对应的 jar 包 <!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client --> & ...
随机推荐
- input输入提示历史记录
一般便于用户的输入习惯,我们都会提示历史消息,让用户有更好的使用体验,以前可能比较多朋友会用js来实现,现在HTML5的datalist可以轻松帮我们实现这个功能!只需以下几行代码 <!doct ...
- JVM Run-Time Data Areas--reference
http://www.programcreek.com/2013/04/jvm-run-time-data-areas/ This is my note of reading JVM specific ...
- 【ES6】var、let、const三者的区别
首先,一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系? ECMAScript是一个国际通过的标准化脚本语言.JavaScript由ECMAScript和DOM.BOM ...
- SSH基本概念和用途
一.SSH是什么 简单的说,SSH是一种网络协议,主要用于客户端与远程主机的安全链接和交互. 二.常见用法1.客户端与远程主机的安全链接命令如下: $ ssh -p user@host 解释如下:-p ...
- ddddddeeeessssssttttrrrrrrooooooyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
我遥远的 POI 计划啊 https://loj.ac/problems/search?keyword=POI2011 atcoder 一套 动态 DP SAM 随便看 XSY 的题 UOJ Roun ...
- 记一次走心One 2 One沟通
聊的比较零零碎碎,内容比较散,有些solution不错,记一些要点吧(1)要学会汇报,就是坐你身边的人,也未必知道你在干啥 三个人都在砌墙.当人们分别问他们在做什么,他们的答案却不一样:第一个人头也没 ...
- node.js搭建https服务器
HTTPS简介 HTTPS:(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版. ...
- 自己实现async和await
无意当中看了一些博文,说有人想自己尝试实现基于异步操作的方法: 1)直接使用Task(不说咯,这个是微软给我们的标准实现方法). 2)必须继承INotifyCompletion接口,同时自己实现IsC ...
- ccf-201712-2 游戏
问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,--,1号小朋友坐在n号小朋友的顺时针方向. 游戏开始,从1号小朋 ...
- 【Android】12.0 UI开发(三)——列表控件ListView的简单实现2
1.0 由于书上内容,已经和实际编程的兼容性已经不太友好,重写了项目,用于进一步学习列表控件ListView. 2.0 新建项目ListViewTest,其中文件目录如下: 3.0 ActivityC ...