![[z/OS]](ngzos.gif)
z/OS 批处理应用程序中的同步点
对于批处理应用程序,可以使用 IBM® MQ 同步点管理调用 :MQCMIT 和 MQBACK。 为了与先前版本兼容,可使用 CSQBCMT 和 CSQBBAK 作为同义词。
使用 MQCMIT 调用落实更改
必须提供 MQCONN 或 MQCONNX 调用返回的连接句柄 (Hconn) 作为输入。
MQCMIT 的输出是完成代码和原因码。 如果同步点已完成但由于先前同步点导致队列管理器回退放置和获取操作,那么调用完成,但显示警告。
成功完成 MQCMIT 调用即指示队列管理器,应用程序已到达同步点,并且自从上一个同步点开始的所有放置和获取操作都已永久生效。
并非所有失败响应都表示 MQCMIT 未完成。 例如,应用程序可能会收到 MQRC_CONNECTION_BROKEN。
在 MQCMIT中有 MQCMIT 调用的描述。
使用 MQBACK 调用回退更改
作为输入,必须提供连接句柄 (Hconn)。 使用 MQCONN 或 MQCONNX 调用返回的句柄。
MQBACK 的输出是完成代码和原因码。
此输出指示队列管理器,应用程序已到达同步点,并且自从上一个同步点开始的所有获取和放置操作都已回退。
MQBACK中有 MQBACK 调用的描述。
事务管理和可恢复的资源管理器服务
事务管理和可恢复资源管理器服务 (RRS) 是一个 z/OS® 设施,用于在参与的资源管理器之间提供两阶段同步点支持。
应用程序可以更新由各种 z/OS 资源管理器 (例如 IBM MQ 和 Db2) 管理的可恢复资源,然后作为单个工作单元落实或回退这些更新。 RRS 可在正常执行期间提供必要的工作单元状态日志记录、协调同步点处理,并在子系统重新启动期间提供相应的工作单元状态信息。
IBM MQ for z/OS RRS 参与者支持使批处理, TSO 和 Db2 存储过程环境中的 IBM MQ 应用程序能够更新 IBM MQ 和非IBM MQ 资源 (例如, Db2 ) 在单个逻辑工作单元中。 有关 RRS 参与者支持的信息,请参阅z/OS MVSProgramming:资源回收。
IBM MQ 应用程序可以使用 MQCMIT 和 MQBACK 或等效的 RRS 调用, SRRCMIT 和 SRRBACK。 更多信息,请参阅RRS 批量适配器。
- RRS 可用性
如果 RRS 在 z/OS 系统上未处于活动状态,那么从与 RRS 存根 (CSQBRSTB 或 CSQBRRSI) 链接的程序发出的任何 IBM MQ 调用都会返回 MQRC_ENVIRONMENT_ERROR。
- Db2 存储过程
- 如果将 Db2 存储过程与 RRS 配合使用,请注意以下事项:
- 使用 RRS 的 Db2 存储过程必须由工作负载管理器 (WLM-managed) 管理。
- 如果 Db2管理的存储过程包含 IBM MQ 调用,并且它与 RRS 存根 (CSQBRSTB 或 CSQBRRSI) 链接,那么 MQCONN 或 MQCONNX 调用将返回 MQRC_environMENT_ERROR。
- 如果 WLM 管理的存储过程包含 IBM MQ 个调用并与非 RRS 存根链接,那么 MQCONN 或 MQCONNX 调用将返回 MQRC_ENVIRONMENT_ERROR ,除非这是自存储过程地址空间启动以来执行的第一个 IBM MQ 调用。
- 如果 Db2 存储过程包含 IBM MQ 调用并与非 RRS 存根链接,那么在该存储过程中更新的 IBM MQ 资源不会落实,直到存储过程地址空间结束,或者直到后续存储过程执行 MQCMIT (使用 IBM MQ Batch/TSO 存根) 为止。
- 在相同地址空间中可以并行执行相同存储过程的多个副本。 如果您希望 Db2 使用存储过程的单个副本,请确保以可重入方式对程序进行编码。 否则,您可能会在程序中的任何 IBM MQ 调用上接收到 MQRC_HCONN_ERROR。
- 请勿在 WLM 管理的 Db2 存储过程中对 MQCMIT 或 MQBACK 进行编码。
- 请将所有程序设计为在语言环境 (LE) 中运行。