我可以停止特定的队列吗?

时间:2020-09-02 20:03:41

标签: ibm-mq

在IBM MQ中是否可以通过控制台(命令行)停止队列? 我知道如何使用endmqm停止队列管理器。但是我可以运行一个控制台命令来停止一个队列吗?

1 个答案:

答案 0 :(得分:3)

不能独立于队列管理器停止队列。 但是,您可能会发现,根据设置的不同,限制进入队列和/或从队列进入队列或从队列中获取限制都可以达到您期望的目标。这样可以防止应用程序将新消息添加到队列和/或从队列中删除消息。

这可以使用runmqsc界面中的命令来完成。 https://www.ibm.com/support/knowledgecenter/SSFKSJ_latest/com.ibm.mq.ref.adm.doc/q083460_.htm

这是您需要的命令:

runmqsc QUEUE_MANAGER_NAME
ALTER QLOCAL('QUEUE_NAME') GET(DISABLED)
ALTER QLOCAL('QUEUE_NAME') PUT(DISABLED)
EXIT

下面是我的命令和输出,用于禁用队列管理器MyQM1上名为Q1的队列的PUT和GET。

mqa(mqcli)# runmqsc MyQM1
5724-H72 (C) Copyright IBM Corp. 1994, 2020.
Starting MQSC for queue manager MyQM1.


ALTER QLOCAL('Q1') GET(DISABLED)
     1 : ALTER QLOCAL('Q1') GET(DISABLED)
AMQ8008I: IBM MQ Appliance queue changed.
ALTER QLOCAL('Q1') PUT(DISABLED)
     2 : ALTER QLOCAL('Q1') PUT(DISABLED)
AMQ8008I: IBM MQ Appliance queue changed.

我建议您首先在测试环境中尝试此操作,以确保它满足您的需求,并确保您的应用程序正确处理错误消息。例如。 “当前禁止该队列进行MQGET调用。(2016年)”