停止 MQI 通道

对服务器连接通道发出 STOP CHANNEL 命令时,可以选择使用何种方法来停止客户机连接通道。 这意味着可以控制发出 MQGET 等待调用的客户机通道,并且您可以决定如何以及何时停止该通道。

可以使用三种方式发出 STOP CHANNEL 命令,指示如何停止通道:
停顿
在处理任何当前消息后停止通道。
如果启用了共享对话,那么 IBM® MQ MQI client 将及时了解停止请求; 此时间取决于网络的速度。 由于发出对 IBM MQ的后续调用,客户机应用程序将知道停止请求。
强制
立即停止通道。
终止
立即停止通道。 如果通道作为进程运行,那么它可以终止通道的进程,或者如果通道作为线程运行,那么它的线程。

这是一个多阶段的过程。 如果使用方式终止,那么会尝试停止服务器连接通道,首先使用方式停顿,然后使用方式强制,如果需要使用方式终止。 在终止的不同阶段,客户机可以接收不同的返回码。 如果进程或线程已终止,那么客户机将接收到通信错误。

返回到应用程序的返回码根据发出的 MQI 调用和发出的 STOP CHANNEL 命令而有所不同。 客户机将接收到 MQRC_CONNECTION_QUIESCING 或 MQRC_CONNECTION_BROKEN 返回码。 如果客户机检测到 MQRC_CONNECTION_QUIESCING ,那么应尝试完成当前事务并终止。 对于 MQRC_CONNECTION_BROKEN ,这是不可能的。 如果客户机未完成事务并以足够快的速度终止,那么将在几秒后获取 CONNECTION_BROKEN。 使用 MODE (FORCE) 或 MODE (TERMINATE) 的 STOP CHANNEL 命令比使用 MODE (QUIESCE) 更有可能导致 CONNECTION_BROKEN。