《WebSphereMQ基础教程》MQI笔记
来源:互联网 发布:单机游戏神作 知乎 编辑:程序博客网 时间:2024/06/11 03:55
一、MQI的基本数据类型
数据类型
说明
MQBYTE
单字节数据
MQBYTEn
16,24,32,64字节的字符串
MQCHAR
单字节字符
MQCHARn
包含4,8,12,16,20,28,32,48,64,128,256个单字节字符的字符串
MQHCONN
连接句柄,32位
MQHOBJ
对象句柄,32位
MQLONG
32位带符号二进制整数
PMQLONG
指向MQLONG类型数据的执政
二、MQI API
1、 连接到队列管理器
MQCONN(&QMgrName , &Hconn , &CompCode , &Reason)
MQCONNX(&QMgrName , ConnectOpts , &Hconn , &CompCode , &Reason)
入口参数:
Char[] QMgrName:队列管理器名,如果为空串,则表示连接到默认队列管理器
ConnectOpts:控制MQCONNX行为的选项
出口参数
MQLONG ComCode:完成码
MQLONG Reason:原因码
MQHCONN Hconn:队列管理器的连接句柄
ConnectOpts
2、 打开WebSphere MQ对象
可以打开的三种WebSphere MQ对象类型有:队列,过程定义,队列管理器
MQOPEN(Hconn,&ObjDesc,Options,&Hobj,&ComCode,&Reason)
入口参数:
MQCONN Hconn:MQCONN调用返回的连接句柄
MQOD ObjDesc:打开对象的描述,它以对象描述结构的形式出现
MQLONG Options:控制调用行为的一个或多个选项
出口参数:
MQLONG ComCode:完成码
MQLONG Reason:原因码
MQHOBJ Hobj:访问对象的对象句柄
MQOD ObjDesc:调用后返回的对象描述结构
3、 关闭WebSphere MQ对象
MQQCLOSE(Hconn,&Hobj,Options,&comCode,&reason)
入口参数:
MQHCONN Hconn:连接句柄
MQHOBJ Hobj:被关闭对象地句柄
MQLONG Options:关闭选项(如果关闭的不是永久动态队列的话,为MQCO_NONE)
MQLONG 结果代码:(完成代码CompCode和原因代码reason)
MQHOBJ Hobj(对象句柄,重置为MQHO_UNUSABLE_HOBJ)
4、 断开与队列管理器的连接
MQDISC(&Hconn,&CompCode,&Reason)
入口参数:
MQHCONN Hconn:提供到队列管理器的连接句柄
出口参数:
MQLONG 结果代码:(完成代码CompCode和原因代码reason
MQHCONN Hconn(连接句柄设置为MQHC_UNUSABLE_HCONN)
5、 将消息放入队列
(1)、将多个消息放入一个已经打开的队列
MQPUT(Hconn,Hobj,&MsgDesc,PutMsgOpts,BufferLength,Buffer,&CompCode,&Reason)
该函数调用前,队列必须先试用MQOO_OUTPUT选项打开
入口参数:
MQHCONN Hconn:连接句柄,由MQCONN调用返回
MQHOBJ Hobj:队列句柄,由MQOPEN返回
MQMD MsgDesc:消息的描述
MQPMO PutMsgOpts:控制信息,其形式为一个放置消息选项结构
MQLONG BufferLength:消息所包含数据的长度
char[] Buffer:消息本身
出口参数:
结果代码:CompCode(完成代码)Reason(原因代码)
MsgDesc:已经根系的消息描述起河选项
(2)、将单一消息放入一个队列,而不显式打开队列
如果仅将单一消息PUT到队列中,我们可以调用MQPUT1,不需要MQOPEN打开队列即可将单个信息放入队列
MQPUT1(Hconn,&ObjDesc,&MsgDesc,&PutMsgOpts,BufferLength,Buffer,&CompCode,&Reason)
6、 从队列获取消息
MQGET(Hconn,Hobj,&MsgDesc,&GetMsgOpts,BufferLength,Buffer,&DataLength,&CompCode,&Reason)
为了执行MQGET调用,必须用MQOO_Input_shared或MQOO_Input_Exclusive选项打开队列,才可能使用这个调用。从队列获得消息是物理顺序还是逻辑顺序,取决于MQOPEN调用和MQGET调用所采用的选项
此调用的入口参数如下:
MQHCONN Hconn:连接句柄,由MQCONN调用返回
MQHOBJ Hobj:队列句柄,由MQOPEN调用返回
MQMD MsgDesc:消息的描述
MQGMO GetMsgOpts:控制信息,以获取消息选项(MQGMO)结构的形式
MQLONG BufferLength:消息所包含数据的长度
Char[] Buffer:消息本身
出口参数:
结果代码:CompCode:完成代码。Reason:原因代码
char[] Buffer:消息本身
MQMD MsgDesc:已经更新的消息描述器和选项
MQLONG DataLength:消息的实际长度
7、 从队列浏览消息
(1)、调用MQOPEN来打开要浏览的队列,选中MQOO_BROWSE(O_options)选项
(2)、调用MQGET,并选中MQGMO_BROWSE_NEXT(gmp.Options)选项,以便逐步浏览随后的许多消息,在任何新的MQGET调用之前将MsgId和CorrelId设为空
(3)、调用MQCLOSE关闭队列
8、 查询对象属性
MQINQ(Hconn,Hobj,SelectorCount,Selectors,IntAttrCount,&IntAttrs,CharAttrLength,&CharAttrs,&CompCode,&Reason)
入口参数如下:
MQHCONN Hconn:连接句柄,由MQCONN调用返回
MQHOBJ Hobj:队列句柄,由MQOPEN调用返回
MQLONG SelectorCount:选择器数量
MQLONG[] Selectors:属性选择器数组
MQLONG IntAttrCount:被查询的整数数量
MQLONG[] IntAttrs:整型变量数组,调用向其返回指定的整型
MQLONG CharAttrLength:字符属性缓存区的长度
Char[] CharAttrs:字符缓存区,调用把被调查字符属性的值放入其中
出口参数如下:
MQLONG[] IntAttrs:一系列拷贝到数组中的整型值
CHAR[] CharAttrs:字符属性返回其中的缓存区
结果代码(CompCode:完成代码,Reason:原因代码)
就字符属性而言,所得的缓存区由长度固定的属性值一个接一个地填充。如果这些属性中的任何一个实际值小于属性的固定长度,那么其余的空间由空白区填充。如果任何对象(在这种情况下,对象就是队列)请求的属性不适合于该类型的队列,那么空间由星号(*)填充
9、 设置对象属性
MQSET(Hconn,Hobj,SelectorCount,Selectors,IntAttrCount,IntAttrs,CharAttrLength,CharAttrs,CompCode,Reason)
入口参数如下:
MQHCONN Hconn:连接句柄,由MQCONN调用返回
MQHOBJ Hobj:队列句柄,由MQOPEN调用返回
MQLONG SelectorCount:选择器数量
MQLONG[] Selectors:属性选择器数组
MQLONG IntAttrCount:被查询的整数数量
MQLONG[] IntAttrs:整型变量数组,调用向其返回指定的整型
MQLONG CharAttrLength:字符属性缓存区的长度
Char[] CharAttrs:字符缓存区,调用把被调查字符属性的值放入其中
出口参数如下:
结果代码(CompCode:完成代码,Reason:原因代码)
MQSET(selectors)可以设定的属性:
InhibitGet(远程队列不适合)
DistList
InhibitPUT
TriggerControl
TriggerType
TriggerDepth;
TriggerMsgPriority
TriggerData
10、 MQI中的事物处理
MQCMIT(Hconn,&CompCode,&Reason)
MQBACK(Hconn,&CompCode,&Reason)
(1) 局部工作单元
在MQPUT和MQGET调用中的PutMessageOpt(PMO)设为Mqpmo_Syncpoint或GetMessageOpt(GMO)设为Mqgmo_SyncPoint代码
不调用MQBEGIN
工作单元中的每个操作都必须设定MQPMO(PutMessageOpt)或MQGMO(Mqpmo_Syncpoint)选项
(2) 全局工作单元
调用MQBEGIN(Hconn,BeginOptions,CompCode,Reason)来启动全局单元
如果局部工作单元已经启动,那么MQBEGIN调用会失败,返回MQRC_UOW_IN_PROGRESS原因。
11、 MQI中的消息分组
组中的每个消息都必须有MQMF_MSG_IN_GROUP标志,但是最后一条消息则应具有MQMF_LAST_MSG_IN_GROUP标志。组中消息的顺序存储在MQMD结构的MsgSeqNumber字段中,它由队列管理器自动生成
md.Version=MQMD_VERSION_2;
md.MsgFlags=MQMF_MSG_IN_GROUP
md.GroupId=MY_GROUP_ID;
md.Encoding=MQENC_NATIVE:
md.CodedCharSetId=MQCCSI_Q_MGR
阅读全文
0 0
- 《WebSphereMQ基础教程》MQI笔记
- 《WebSphereMQ基础教程》MQI笔记
- 使用WebSphereMQ
- WebsphereMQ 远程队列配置
- WebsphereMQ 本地队列配置
- jquery基础教程笔记
- linux基础教程学习笔记
- jquery基础教程笔记
- jQuery官方基础教程笔记
- jQuery基础教程笔记
- Opencv基础教程笔记 1
- Opencv基础教程笔记2
- Opencv基础教程笔记3
- 《jQuery基础教程》笔记-U6
- iPhone开发基础教程 笔记
- SQL基础教程--笔记
- W3-HTML 基础教程笔记
- 【SQL 基础教程】学习笔记
- 复习练习
- HTML基础知识
- Chapter 11 Greenplum MapReduce 规范
- 流计算框架 Flink 与 Storm 的性能对比
- JavaScript 编码解码方法
- 《WebSphereMQ基础教程》MQI笔记
- Android开发技术框架和编码规范
- cmd命令太长分成多行的写法
- 使用TCP协议编写一个网络程序
- 吴恩达 深度学习 1-3 课后作业 Planar data classification with one hidden layer
- MySql 定时任务和存储过程,每月创建一张表
- Eclipse IDE搭建Spark+java开发环境
- JavaEE开发系列---dao层开发
- DynamicList动态顺序存储结构