研究MQ很长时间了, 每个类,方法,都查了很长时间,在此总结一下!

Java编写访问MQ的程序

1、MQQueueManager―――队列管理器访问类 

常用方法: 
public MQQueueManager(String queueManagerName)―――建立一个管理器实例

创建队列管理器有两种方式:

1:绑定方式,这种方式要求MQ服务器与应用程序同属一台服务器,效率比较高。

2:客户机方式:这种方式应用程序和MQ服务器可以不在同一台服务器上,但是要考虑到MQ权限的问题,尤其是MQ7.5之后,权限变的很复杂,慎重对待。
注:如果使用绑定的方式则可以直接创建一个新的队列管理器实例。但是在某些平台下这样直接创建会出错,必须采用MQClient的方式进行连接。此时需要先定义服务通道,端口,服务名等环境变量,再创建一个队列管理器实例。如:

  1. MQEnvironment.hostname = "IP地址";
  2. MQEnvironment.channel = "channelname";
  3. MQEnvironment.port = port ;
  4. MQEnvironment.CCSID = CCSID;
  5. 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;//写的字符集

一般读取消息的操作为:

  1. MQMessage message = new MQMessage(); ….
  2. int length = message.getDataLength();
  3. byte buffer[] = new byte[length];
  4. message.readFully(buffer);

public void write(byte b[])―――把指定的字节数组写入消息 
一般写消息的操作为:

  1. byte[] buffer = “asdasdad”.getBytes();
  2. MQMessage message = new MQMessage(); ….
  3. message.write(buffer);
  4. 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 看到连接到这个队列管理器上连接.

最新文章

  1. 旺财速啃H5框架之Bootstrap(三)
  2. leetcode算法分类
  3. Python 2.7.x 和 3.x 版本的重要区别
  4. NHibernate系列文章八:NHibernate对象一级缓存
  5. 【高德地图API】如何设置Icon的imageSize?
  6. 控制变量法-初中物理-Nobel Lecture, December 12, 1929-php执行SET GLOBAL connect_timeout=2效果
  7. css禁止用户选中文本(转)
  8. Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)
  9. POJ 1185 状态压缩DP 炮兵阵地
  10. 普通table表格样式及代码大全(全)
  11. web并发模型
  12. asp.net缓存(一)
  13. gmake使用注意
  14. Centos 5上使用YUM安装GIT
  15. 纪中集训 Day1
  16. eslint 入门项目搭建过程
  17. Spring与Akka的集成
  18. PDF 报表 Java 组件 iText5 中的单位注意事项
  19. xlrd、xlwt 操作excel表格详解
  20. Linux+eclipse+maven+tomcat7小项目实战

热门文章

  1. CCF 出现次数最多的数 201312-1
  2. spring的基本用法
  3. SpringMVC的数据回现
  4. 第一次尝试用ANT进行build
  5. C#基础笔记 转自wojiushigelg
  6. Shiro - 关于Realm
  7. Java Native Interface Specification Contents 翻译
  8. vcfc之zk+postsql+keystore(cassandra)框架分析
  9. 通过反射感知Redis类里边全部的操作方法
  10. css3打包后自动追加前缀插件:autoprefixer