![[z/OS]](ngzos.gif)
IMS 网桥如何处理消息
使用 IBM® MQ - IMS 网桥将消息发送到 IMS 应用程序时,需要以特殊格式构造消息。
您还必须将消息放在已使用指定目标 IMS 系统的 XCF 组和成员名的存储类定义的 IBM MQ 队列上。 这些队列称为 MQ-IMS 网桥队列,或简称为网桥队列。
如果使用 QSGDISP (QMGR) 定义了网桥队列,或者如果使用 QSGDISP (SHARED) 与 NOSHARE 选项一起定义了该网桥队列,那么 IBM MQ-IMS 网桥需要对该网桥队列进行互斥输入访问 (MQOO_INPUT_EXCLUSIVE)。
在将消息发送到 IMS 应用程序之前,用户不需要登录到 IMS 。 MQMD 结构的 UserIdentifier 字段中的用户标识用于安全性检查。 检查级别是在 IBM MQ 连接到 IMS时确定的,在 IMS 网桥的应用程序访问控制中进行了描述。 这使得伪登录可以实施。
IBM MQ - IMS 网桥接受以下类型的消息:
- 包含 IMS 事务数据和 MQIIH 结构的消息 (如 MQIIH 中所述):
MQIIH LLZZ<trancode><data>[LLZZ<data>][LLZZ<data>]注:- 方括号 [ ] 表示可选的多区段。
- 将 MQMD 结构的
Format字段设置为 MQFMT_IMS 以使用 MQIIH 结构。
- 包含 IMS 事务数据但无 MQIIH 结构的消息:
LLZZ<trancode><data> \ [LLZZ<data>][LLZZ<data>]
IBM MQ 验证消息数据以确保 LL 字节与 MQIIH 长度 (如果存在) 之和等于消息长度。
当 IBM MQ - IMS 网桥从网桥队列获取消息时,将按如下所示进行处理:
- 如果消息包含 MQIIH 结构,那么网桥将验证 MQIIH (请参阅 MQIIH ) ,构建 OTMA 头并将消息发送到 IMS。 事务代码在输入消息中指定。 如果这是 LTERM ,那么 IMS 会使用 DFS1288E 消息进行应答。 如果事务代码表示命令,那么 IMS 将执行该命令; 否则消息将在 IMS 中排队以用于事务。
- 如果消息包含 IMS 事务数据,但没有 MQIIH 结构,那么 IMS 网桥将进行以下假定:
- 事务代码是 5 - 12 个字节的用户数据
- 事务处于非会话模式
- 会话使用提交模式 0(提交然后发送)
- MQMD 中的
Format用作MFSMapName(输入时) - 安全模式为 MQISS_CHECK
还会在没有 MQIIH 结构的情况下构建应答消息,从 IMS 输出的
MFSMapName中获取 MQMD 的Format。
IBM MQ - IMS 网桥对每个 IBM MQ 队列使用一个或两个 Tpipe:
- 同步 Tpipe 用于使用落实方式 0 (COMMIT_THEN_SEND) 的所有消息 (这些显示在 IMS /DIS TMEMBER 客户机 TPIPE xxxx 命令的状态字段中带有 SYN)
- 非同步 Tpipe 用于使用提交模式 1 (SEND_THEN_COMMIT) 的所有消息
Tpipe 由 IBM MQ 在首次使用时创建。 在重新启动 IMS 之前,存在未同步的 Tpipe。 同步 Tpipe 存在,直到 IMS 冷启动为止。 您自己无法删除这些 Tpipe。
有关 IBM MQ - IMS 网桥如何处理消息的更多信息,请参阅以下主题: