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 --> & ...
随机推荐
- 【c++】构造函数初始化列表中成员初始化的次序性
上代码 #include <iostream> using namespace std; class A { public: A(int v): j(v + 2), i(j) {} voi ...
- 二叉树链表C++实现
结点的构造 源代码:https://github.com/cjy513203427/C_Program_Base/tree/master/57.%E4%BA%8C%E5%8F%89%E6%A0%91% ...
- Golang教程:指针
什么是指针 指针是存储一个变量的内存地址的变量. 在上图中,变量 b 的值是 156,存储在地址为 0x1040a124 的内存中.变量 a 存储了变量 b 的地址.现在可以说 a 指向b. 指针的声 ...
- .net托管资源与非托管资源
在项目当中用到的资源分为托管资源和非托管资源,托管资源无非就是什么int.string.datatime之类,托管资源不需要人为去管理,.net framework中有专门针对托管资源的管理机制(GC ...
- react-native学习之环境安装
1.首先是java环境安装-安装JDK 2.安装Android-SDK,推荐以下地址:http://tools.android-studio.org/index.php/sdk 然后打开SDK Man ...
- 2018-12-25 课堂笔记&面试题
面试题一.Java中,八大基本数据类型有哪些?答:数值型:整型(byte.short.int.long)浮点型(float.double)非数值型:布尔类型(boolean)字符型(char).注意: ...
- hdu 4003 Find Metal Mineral 树形dp ,*****
Find Metal Mineral Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Other ...
- 移动端适配(2)——viewport适配
通过viewport来适配 <script> (function(){ var w=window.screen.width; console.log(w);//获取屏幕尺寸 var tar ...
- [小北De编程手记] : Lesson 04 - Selenium For C# 之 API 上
这一部分,我准备向大家介绍Selenium WebDriver的常用API,学习这部分内容需要大家最好有一些简单的HTML相关知识,本文主要涉及到以下内容: Selenium API:元素检查 Sel ...
- 我的视频网站开通,第一个 ArcGIS文本文件,excel文件生成点操作发布,希望大家支持
网站地址:http://i.youku.com/gisoracle第一个学习视屏:ArcGIS文本文件,excel文件生成点操作http://v.youku.com/v_show/id_XNzM3Nz ...