使用 MQDISC 从队列管理器断开程序连接

使用此信息以了解如何使用 MQDISC 将程序从队列管理器断开连接。

在已使用 MQCONN 或 MQCONNX 调用连接到队列管理器的程序已完成与队列管理器的所有交互时,会使用 MQDISC 调用断开此连接,除了以下情况:
  • CICS® Transaction Server for z/OS® 应用程序上,除非使用了 MQCONNX ,并且您希望在应用程序结束之前删除连接标记,否则调用是可选的。
  • IBM® MQ for IBM i 上,当您从操作系统注销时,将执行隐式 MQDISC 调用。

必须提供连接到队列管理器时 MQCONN 或 MQCONNX 返回的连接句柄 (Hconn),作为 MQDISC 调用的输入。

除了在 z/OS上的 CICS 上,在调用 MQDISC 后,连接句柄 (Hconn) 不再有效,并且在再次调用 MQCONN 或 MQCONNX 之前,无法再发出任何 MQI 调用。 对于仍使用此句柄打开的任何对象,MQDISC 会执行隐式 MQCLOSE。

[z/OS]对于连接到 z/OS的客户机,当发出 MQDISC 调用时,将进行隐式落实,但在通道实际结束之前,仍处于打开状态的任何队列句柄都不会关闭。

如果使用 MQCONNX 在 IBM MQ for z/OS上进行连接,那么 MQDISC 还会结束 MQCONNX 建立的连接标记的作用域。 但是,在 CICSIMS或 RRS 应用程序中,如果存在与连接标记关联的活动恢复单元,那么将拒绝 MQDISC ,原因码为 MQRC_CONN_TAG_NOT_RELEASED。

这些参数的描述在 MQDISC中的 MQDISC 调用的描述中提供。

未发出 MQDISC 时

创建线程终止时,会清除标准非共享连接 (Hconn)。 仅当整个进程终止时,才会隐式回退和断开共享连接。 如果仍存在 Hconn 时创建共享 Hconn 的线程终止,那么 Hconn 仍可使用。

权限检查

通常,MQCLOSE 和 MQDISC 调用不会执行权限检查。

在正常事件过程中,有权打开或连接到 IBM MQ 对象的作业将关闭该对象或与该对象断开连接。 即使已连接或打开 IBM MQ 对象的作业的权限被撤销,也会接受 MQCLOSE 和 MQDISC 调用。