直接 MQSeries 调用

可以使用介于代码与 MQSeries® 之间的一组已安装 EGL 函数,如 MQSeries 支持中所述。

下表列示可用的函数并标识必需的自变量。例如,MQBACK (MQSTATE) 指示在调用 MQBACK 时需要传递基于 MQSTATE 记录部件的自变量。稍后会描述记录部件。

与 MQSeries 相关的 EGL 函数调用 作用
MQBACK (MQSTATE) 调用系统函数 sysLib.rollback 以回滚逻辑工作单元。回滚会影响程序正在访问的所有可恢复的资源,包括数据库、消息队列和可恢复的文件。
MQBEGIN (MQSTATE, MQBO) 开始逻辑工作单元。
MQCHECK_COMPLETION (MQSTATE) 设置基于 MQSTATE 的记录的 mqdescription 字段。设置是根据最新返回的原因码进行的。将从 EGL 函数 MQBEGIN、MQCLOSE、MQCONN、 MQCONNX、MQDISC、MQGET、MQINQ、 MQOPEN、MQPUT、MQPUT1 和 MQSET 自动调用函数 MQCHECK_COMPLETION。
MQCLOSE (MQSTATE) 关闭 MQSTATE.hobj 引用的消息队列。
MQCMIT (MQSTATE) 调用系统函数 sysLib.commit 以落实逻辑工作单元。落实将影响程序正访问的所有可恢复的 资源,包括数据库、消息队列和可恢复的文件。
MQCONN (MQSTATE, qManagerName) 连接至队列管理器,它由 qManagerName(一个最长可达 48 个字符的字符串)标识。MQSeries 设置连接句柄(MQSTATE.hconn)以供后续调用使用。
注: 可以将代码以每次连接至一个队列管理器的方式来连接至队列管理器。
MQCONNX(MQSTATE, qManagerName, MQCNO) 使用用于控制调用工作方式的选项来连接至队列管理器。队列管理器由 qManagerName(一个最长可达 48 个字符的字符串)标识。MQSeries 设置连接句柄(MQSTATE.hconn)以供后续调用使用。
MQDISC (MQSTATE) 与队列管理器断开连接。
MQGET(MQSTATE, MQMD, MQGMO, BUFFER) 从队列中读取然后除去消息。缓冲区不能超过 32767 个字节,但是如果您正在使用 EGL get next 语句,则该限制不适用。
MQINQ(MQSTATE, MQATTRIBUTES) 请求队列属性。
MQNOOP() 只由 EGL 使用。
MQOPEN(MQSTATE, MQOD) 打开消息队列。MQSeries 设置队列句柄(MQSTATE.hobj)以供后续调用使用。
MQPUT(MQSTATE, MQMD, MQPMO, BUFFER) 将消息添加至队列。缓冲区不能超过 32767 个字节,但是如果您正在使用 EGL add 语句,则该限制不适用。
MQPUT1(MQSTATE, MQOD, MQMD, MQPMO, BUFFER) 打开队列,写入一条消息,然后关闭队列。
MQSET(MQSTATE, MQATTRIBUTES) 设置队列的属性。

下表列示在调用与 MQSeries 相关的 EGL 函数时用作自变量的选项记录。还列示了应该对给定自变量调用的初始化函数。

第一步是初始化基于 MQSTATE 记录部件的自变量。在以下示例(如后面的表中所示)中,假定自变量名与记录部件的名称相同:
  MQSTATE_INIT(MQSTATE);

自变量(记录部件名) 初始化函数 描述
MQATTRIBUTES 属性和属性选择器的数组以及在命令 MQINQ 或 MQSET 中使用的其它信息
MQBO MQBO_INIT (MQBO) 开始选项
MQCNO MQCNO_INIT (MQCNO) 连接选项
MQGMO MQGMO_INIT (MQGMO) 获取消息选项
MQIIH MQIIH_INIT (MQIIH) IMS™ 信息头;描述在发送至 IMS 的 MQSeries 消息的开头所需的信息(MQSeries 文档指示在 Windows® 2000/NT/XP 上不支持使用此信息头)
MQINTATTRS 整数属性的数组,用于命令 MQINQ 或 MQSET 中
MQMD MQMD_INIT (MQMD, MQSTATE) 消息描述符(MQSeries V2)
MQMDE MQMDE_INIT (MQMDE, MQSTATE) 消息描述符扩展(仅使用 MQSeries V2 中的字段)
MQOD MQOD_INIT (MQOD) 对象描述符
MQOO MQOO_INIT (MQOO) 打开选项
MQPMO MQPMO_INIT (MQPMO) 放置消息选项
MQSELECTORS 属性选择器的数组,仅当您希望在不使用 EGL 函数的情况下访问 MQSeries 时才使用
MQSTATE MQSTATE_INIT (MQSTATE) 在对 MQSeries 的一个或多个调用中使用的自变量的集合;例如,当使用 EGL 函数 MQCONN 或 MQCONNX 进行连接时,MQSeries 设置连接句柄(MQSTATE.hconn)以供后续调用使用
MQXQH MQXQH_INIT (MQXQH, MQSTATE) 传输队列头
注: 每个记录部件都只包含一个结构项,而结构项将结构部件用作 typeDef。此设置提供了最大程度的灵活性。您可以创建自己的记录部件,而每个记录部件都由一系列结构部件组成。

每个结构部件的名称都是记录部件的名称后跟 _S;例如,记录部件 MQGMO 使用名为 MQGMO_S 的结构部件。

相关概念
与 MQSeries 相关的 EGL 关键字
MQSeries 支持
记录部件
Typedef

相关参考
get next
commit()
rollback()

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.