zoukankan      html  css  js  c++  java
  • MQ--API总结

    研究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 看到连接到这个队列管理器上连接.

  • 相关阅读:
    第二十三篇 函数的调用和函数参数的应用
    第二十四篇 可变长参数
    第二十二篇 定义函数的三种形式以及函数的返回值
    <面试题>面试题整理(1-100)
    算法通关面试40讲
    <Django>部署项目
    <Django>天天生鲜项目(三)
    <Django>天天生鲜项目(三)
    <Django>天天生鲜项目(二)
    <mysql>mysql日志文件
  • 原文地址:https://www.cnblogs.com/haitaofeiyang/p/7531090.html
Copyright © 2011-2022 走看看