endmqm (结束队列管理器)

停止队列管理器或切换到备用队列管理器 或副本队列管理器

用途

使用 endmqm 命令来结束 (停止) 指定的队列管理器。 此命令以以下方式停止队列管理器:
  • 受控或停顿关闭
  • 立即关闭 (immediate shutdown)
  • 先发制人地关闭
  • 等待关闭

endmqm 命令以停止单个实例队列管理器的相同方式停止多实例队列管理器的所有实例。 您可以在活动实例或多实例队列管理器的其中一个备用实例上发出 endmqm 。 必须在活动实例上发出 endmqm 以结束队列管理器。

如果对多实例队列管理器的活动实例发出 endmqm 命令,那么可以允许备用实例在当前活动实例完成关闭时切换为新的活动实例。

如果在多实例队列管理器的备用实例上发出 endmqm 命令,那么可以通过添加 -x 选项来结束备用实例,并使活动实例保持运行状态。 如果在不带 -x 选项的备用实例上发出 endmqm ,那么队列管理器将报告错误。

[IBM Cloud Pak for Integration]您可以在 Native HA 组的活动节点或副本节点上发布 endmqm 命令。 执行检查以查看停止指定实例是否会破坏组的定额,如果会,那么该命令将失败。 如果在活动实例上发出 endmqm -s ,那么该实例将停止,并且其中一个副本将成为活动实例。 如果在副本实例上发出 endmqm -x ,那么该实例将停止。

发出 endmqm 命令将影响通过服务器连接通道连接的任何客户机应用程序。 效果因所使用的参数而异,但就像在三种可能的模式中发出了一条 STOP CHANNEL 命令一样。 请参阅 停止 MQI 通道,以获取有关 STOP CHANNEL 方式对服务器连接通道的影响的信息。 endmqm 可选参数描述说明它们将等效于哪个 STOP CHANNEL 方式。

如果发出 endmqm 以停止队列管理器,那么可重新连接的客户机不会尝试重新连接。 要覆盖此行为,请指定 -r-s 选项以使客户机能够开始尝试重新连接。
注: 如果队列管理器或通道意外结束,那么可重新连接的客户机将开始尝试重新连接。
注: 客户机可能不会重新连接到此队列管理器。 根据客户机已使用的 MQCONNX 重新连接选项以及客户机连接表中队列管理器组的定义,客户机可能重新连接到其他队列管理器。 您可以配置客户机以强制其重新连接到同一队列管理器。

必须从与您正在使用的队列管理器相关联的安装中使用 endmqm 命令。 您可以使用 dspmq -o installation 命令来查明队列管理器与之关联的安装。

队列管理器的属性以及与其关联的对象不受 endmqm 命令影响。 您可以使用 strmqm (启动队列管理器) 命令重新启动队列管理器。

要删除队列管理器,请将其停止,然后使用 dltmqm (删除队列管理器) 命令。

Syntax

Read syntax diagramSkip visual syntax diagram endmqm  -z  -c  -w  -i  -p  -s -r -t interval -tp interval-x QMgrName

必需参数

QMgrName
要停止的消息队列管理器的名称。

可选参数

-c
受控 (或停顿) 关闭。 此参数是缺省值。

队列管理器将停止,但仅在所有应用程序都已断开连接后停止。 当前正在处理的任何 MQI 调用都已完成。 在应用程序断开连接和队列管理器实际停止之间的短暂时间内发出 dspmq(显示队列管理器) 命令(这种情况不太可能发生), dspmq(显示队列管理器) 命令可能会暂时将状态报告为Ending immediately,即使请求了受控关闭。

控制权将立即返回给您,并且不会在队列管理器停止时通知您。

对通过服务器连接通道连接的任何客户机应用程序的影响相当于以 QUIESCE 方式发出的 STOP CHANNEL 命令。

-i
立即关闭。 队列管理器在完成当前正在处理的所有 MQI 调用后停止。 发出命令后发出的任何 MQI 请求都失败。 下次启动队列管理器时,将回滚任何不完整的工作单元。

在队列管理器结束后返回控制权。

对通过服务器连接通道连接的任何客户机应用程序的影响相当于以 FORCE 方式发出的 STOP CHANNEL 命令。

-p
抢先关闭。
重要信息: 仅在特殊情况下 (例如,当队列管理器未因正常 endmqm 命令而停止时) 使用此类型的关闭。

队列管理器可能会停止而不等待应用程序断开连接或 MQI 调用完成。 这可能会为 IBM® MQ 应用程序提供不可预测的结果。 关闭方式设置为 立即关闭。 如果队列管理器在几秒后仍未停止,那么将升级关闭方式,并且将停止所有剩余的队列管理器进程。

对通过服务器连接通道连接的任何客户机应用程序的影响相当于以 TERMINATE 方式发出的 STOP CHANNEL 命令。

-r
开始尝试重新连接可重新连接的客户机。 此参数的作用是重新建立客户机与其 队列管理器组中其他队列管理器的连接。
-s

对于多实例队列管理器,在关闭后切换到备用队列管理器实例。 该命令会在结束活动实例之前检查是否有备用实例正在运行。 它不会在结束之前等待备用实例启动。 与队列管理器的连接因活动实例关闭而中断。 可重新连接的客户机开始尝试重新连接。 您可以配置客户机的重新连接选项,以仅重新连接到同一队列管理器的另一个实例,或者重新连接到队列管理器组中的其他队列管理器。

[IBM Cloud Pak for Integration]对于本地 HA 组的活动实例,在关闭后切换到副本实例。
  • 指定 -r 选项以帮助客户机应用程序重新连接到另一个实例。
  • 如果此实例不是本机 HA 组中的活动实例,那么该命令将失败。
  • 如果结束此活动实例将导致组定额失败,那么该命令将失败。 (如果其他实例在您运行此命令的同时结束或变为不可用,那么定额检查可能不会检测到此情况,本机 HA 组将结束,并且仅当有足够的实例可用时才能重新启动。)
-w
等待关闭。

此类型的关闭等同于受控关闭,只是只有在队列管理器停止后才会将控制返回给您。 您接收到消息Waiting for queue manager qmName to end关闭正在进行。 在应用程序断开连接和队列管理器实际停止之间的短暂时间内发出 dspmq(显示队列管理器) 命令(这种情况不太可能发生), dspmq(显示队列管理器) 命令可能会暂时将状态报告为Ending immediately,即使请求了受控关闭。

对通过服务器连接通道连接的任何客户机应用程序的影响相当于以 QUIESCE 方式发出的 STOP CHANNEL 命令。

-x

对于多实例队列管理器,结束队列管理器的备用实例,而不结束队列管理器的活动实例。

[IBM Cloud Pak for Integration]对于本地 HA 组的副本实例,请停止该实例:
  • 如果此实例是本机 HA 组中的活动实例,那么该命令将失败。
  • 如果结束此副本实例将导致组定额失败,那么该命令将失败。 (如果其他实例在您运行此命令的同时结束或变为不可用,那么定额检查可能不会检测到此情况,本机 HA 组将结束,并且仅当有足够的实例可用时才能重新启动。)
-z
禁止命令上的错误消息。

[MQ 9.2.0 2020 年 7 月]-t <间隔
尝试在 <interval> 秒内结束队列管理器的目标时间,将应用程序断开连接的阶段升级。 允许完成基本队列管理器维护任务,这可能会延长队列管理器结束阶段。 (更多信息,请参阅在目标时间内结束队列管理器

[MQ 9.2.0 2020 年 7 月]-tp <间隔
尝试在 <interval> 秒内结束队列管理器的目标时间,将应用程序断开连接的阶段升级。 必要时,将中断基本队列管理器维护任务。
当 NPMCLASS 在队列上设置为 HIGH 时,这些维护任务包括尝试保留非持久消息。 (更多信息,请参阅在目标时间内结束队列管理器

返回码

表 1. 返回码标识和描述
返回码 描述
0 队列管理器已结束
3 正在创建队列管理器
16 队列管理器不存在
39 指定的参数无效
40 队列管理器不可用
49 队列管理器正在停止
58 检测到对安装的使用不一致
62 队列管理器与其他安装相关联
69 存储不可用
71 意外错误
77 IBM MQ 队列管理器无法切换
79 未结束 IBM MQ 队列管理器 QmgrName 的活动实例
90 未结束 IBM MQ 队列管理器 QmgrName 的备用实例
119 已拒绝许可权

示例

以下示例显示用于停止指定队列管理器的命令。
  1. 此命令以受控方式结束名为 mercury.queue.manager 的队列管理器。 允许当前连接的所有应用程序断开连接。
    endmqm mercury.queue.manager
    
  2. 此命令立即结束名为 saturn.queue.manager 的队列管理器。 所有当前 MQI 调用都已完成,但不允许新的 MQI 调用。
    endmqm -i saturn.queue.manager
    
向多实例队列管理器的本地实例发送 endmqm 的结果如表 2 所示。 命令的结果取决于使用的是 -s 还是 -x 开关,以及队列管理器本地和远程实例的运行状态。
表 2。 endmqm 操作
endmqm 选项 本地计算机 远程机器 RC 消息 结果
  活动 None 0 - 队列管理器已结束。
备用 队列管理器已结束,包括备用实例。
备用 活动 90 AMQ8368 IBM MQ 队列管理器 QmgrName 的备用实例未结束。
-s 活动 None 77 AMQ7276 IBM MQ 队列管理器无法切换。
备用 0 - 队列管理器 QMNAME 已结束,允许切换到备用实例。
备用 活动 90 AMQ8368 IBM MQ 队列管理器 QmgrName 的备用实例未结束。
-x 活动 None 79 AMQ8367 未结束 IBM MQ 队列管理器 QmgrName 的活动实例。
备用
备用 活动 0 - 队列管理器 QMNAME 的备用实例已结束。
下表显示了向本地 HA 实例发布 endmqm 的结果。
表 3. endmqm 操作
endmqm 选项 本地计算机 远程机器 RC 消息 结果
  活动 None 0 - 队列管理器已结束。
备用 队列管理器已结束,包括备用实例。
备用 活动 90 AMQ8368 IBM MQ 队列管理器 QmgrName 的备用实例未结束。
[IBM Cloud Pak for Integration] 本机 HA 处于活动状态 - 0 - 活动实例已结束。 其余实例进行通信并选择新的 "活动" (如果它们可以找到定额)。
本机 HA 副本 - 0 - 副本实例已结束。 剩余实例将继续 (如果它们具有定额)。
-s 活动 None 77 AMQ7276 IBM MQ 队列管理器无法切换。
备用 0 - 队列管理器 QMNAME 已结束,允许切换到备用实例。
备用 活动 90 AMQ8368 IBM MQ 队列管理器 QmgrName 的备用实例未结束。
[IBM Cloud Pak for Integration]-s 本机 HA 处于活动状态 法定人数将保持不变 0 - 活动实例已结束。
本机 HA 处于活动状态 定额将被破坏 79 AMQ7275 实例未结束,因为这将导致定额丢失。
本机 HA 副本 - 90 AMQ7277 此操作对副本实例无效。
-x 活动 None 79 AMQ8367 未结束 IBM MQ 队列管理器 QmgrName 的活动实例。
备用
备用 活动 0 - 队列管理器 QMNAME 的备用实例已结束。
[IBM Cloud Pak for Integration]-x 本机 HA 处于活动状态 - 79 AMQ8367 未结束 IBM MQ 队列管理器 "MG" 的活动实例。
本机 HA 副本 法定人数将保持不变 0 - 副本实例已结束。
本机 HA 副本 定额将被破坏 90 AMQ7275 实例未结束,因为这将导致定额丢失。