MQ--API总结

2021-05-13 23:29

阅读:416

标签:boa   href   访问   details   环境变量   string   asd   自己的   int   

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

Java编写访问MQ的程序 

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

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

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

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

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

 

[html] view plain copy
 
  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;//写的字符集


一般读取消息的操作为: 

[html] view plain copy
 
  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[])―――把指定的字节数组写入消息 
一般写消息的操作为: 

 

[html] view plain copy
 
  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 看到连接到这个队列管理器上连接.

 

 

MQ--API总结

标签:boa   href   访问   details   环境变量   string   asd   自己的   int   

原文地址:http://www.cnblogs.com/haitaofeiyang/p/7531090.html


评论


亲,登录后才可以留言!