停止 MQI 通道
对服务器连接通道发出 STOP CHANNEL 命令时,可以选择使用何种方法来停止客户机连接通道。 这意味着可以控制发出 MQGET 等待调用的客户机通道,并且您可以决定如何以及何时停止该通道。
可以使用三种方式发出 STOP CHANNEL 命令,指示如何停止通道:
- 停顿
- 在处理任何当前消息后停止通道。
- 强制
- 立即停止通道。
- 终止
- 立即停止通道。 如果通道作为进程运行,那么它可以终止通道的进程,或者如果通道作为线程运行,那么它的线程。
这是一个多阶段的过程。 如果使用方式终止,那么会尝试停止服务器连接通道,首先使用方式停顿,然后使用方式强制,如果需要使用方式终止。 在终止的不同阶段,客户机可以接收不同的返回码。 如果进程或线程已终止,那么客户机将接收到通信错误。
返回到应用程序的返回码根据发出的 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。