如何在 IBM MQ 中识别集群中的队列列表和队列名称以及在集群中添加/删除队列?
How to identify list of queues and queue names in cluster in IBM MQ and add / remove queues in cluster?
我需要在队列管理器中识别集群队列。我需要输出作为队列名称和集群名称。
将不在集群中的队列添加到集群
从集群中删除队列哪些队列在集群中
要显示在本地队列管理器上设置了 CLUSTER
或 CLUSNL
属性的所有队列,您可以使用 WHERE
参数搜索具有 CLUSTER
或 CLUSNL
属性,即 NE
(不等于)到 ''
(空白)。
printf "DISPLAY Q(*) WHERE(CLUSTER NE '')\nDISPLAY Q(*) WHERE(CLUSNL NE '')" | runmqsc <qmgr> | grep "QUEUE(" | awk -F'[()]' '{print }'
下面的变体将打印带有 "QUEUE,CLUSTER,CLUSNL" 的 CSV 输出。 printValues 语法来自@mike.dld 对此post ""
的回答
printf "DISPLAY Q(*) WHERE(CLUSTER NE '')\nDISPLAY Q(*) WHERE(CLUSNL NE '')" | runmqsc <qmgr> | grep -o '^\w\+:\|\w\+[(][^)]\+[)]' | awk -F '[()]' -v OFS="," 'function printValues() { if ("QUEUE" in p) { print p["QUEUE"], p["CLUSTER"], p["CLUSNL"] } } /^\w+:/ { printValues(); delete p; next } { p[] = } END { printValues() }'
要显示所有未在本地队列管理器上设置 CLUSTER
和 CLUSNL
属性的队列,您可以使用 WHERE
参数搜索带有 CLUSTER
和 CLUSNL
属性,即 EQ
(等于)到 ''
(空白)。 sort、uniq 和 awk 帮助仅显示两者均为空白的那些。
printf "DISPLAY Q(*) WHERE(CLUSTER EQ '')\nDISPLAY Q(*) WHERE(CLUSNL EQ '')" | runmqsc <qmgr> | grep "QUEUE(" | awk -F'[()]' '{print }' | sort | uniq -c | awk '{ if ( ~ /2/) {print }}'
要将队列添加到集群,您需要 ALTER
将 CLUSTER
属性设置为有效集群的名称。也可以使用CLUSNL
属性指定一个NAMELIST
,NAMELIST
必须至少包含一个簇名,但可以包含多个簇名,允许队列在多个簇中。
echo "ALTER QL(TEST.Q) CLUSTER(RAJCLUS)" | runmqsc <qmgr>
要从集群中删除队列,您需要清空 CLUSTER
和 CLUSNL
属性。
echo "ALTER QL(TEST.Q) CLUSTER('') CLUSNL('')" | runmqsc <qmgr>
我需要在队列管理器中识别集群队列。我需要输出作为队列名称和集群名称。
将不在集群中的队列添加到集群 从集群中删除队列哪些队列在集群中
要显示在本地队列管理器上设置了 CLUSTER
或 CLUSNL
属性的所有队列,您可以使用 WHERE
参数搜索具有 CLUSTER
或 CLUSNL
属性,即 NE
(不等于)到 ''
(空白)。
printf "DISPLAY Q(*) WHERE(CLUSTER NE '')\nDISPLAY Q(*) WHERE(CLUSNL NE '')" | runmqsc <qmgr> | grep "QUEUE(" | awk -F'[()]' '{print }'
下面的变体将打印带有 "QUEUE,CLUSTER,CLUSNL" 的 CSV 输出。 printValues 语法来自@mike.dld 对此post "
printf "DISPLAY Q(*) WHERE(CLUSTER NE '')\nDISPLAY Q(*) WHERE(CLUSNL NE '')" | runmqsc <qmgr> | grep -o '^\w\+:\|\w\+[(][^)]\+[)]' | awk -F '[()]' -v OFS="," 'function printValues() { if ("QUEUE" in p) { print p["QUEUE"], p["CLUSTER"], p["CLUSNL"] } } /^\w+:/ { printValues(); delete p; next } { p[] = } END { printValues() }'
要显示所有未在本地队列管理器上设置 CLUSTER
和 CLUSNL
属性的队列,您可以使用 WHERE
参数搜索带有 CLUSTER
和 CLUSNL
属性,即 EQ
(等于)到 ''
(空白)。 sort、uniq 和 awk 帮助仅显示两者均为空白的那些。
printf "DISPLAY Q(*) WHERE(CLUSTER EQ '')\nDISPLAY Q(*) WHERE(CLUSNL EQ '')" | runmqsc <qmgr> | grep "QUEUE(" | awk -F'[()]' '{print }' | sort | uniq -c | awk '{ if ( ~ /2/) {print }}'
要将队列添加到集群,您需要 ALTER
将 CLUSTER
属性设置为有效集群的名称。也可以使用CLUSNL
属性指定一个NAMELIST
,NAMELIST
必须至少包含一个簇名,但可以包含多个簇名,允许队列在多个簇中。
echo "ALTER QL(TEST.Q) CLUSTER(RAJCLUS)" | runmqsc <qmgr>
要从集群中删除队列,您需要清空 CLUSTER
和 CLUSNL
属性。
echo "ALTER QL(TEST.Q) CLUSTER('') CLUSNL('')" | runmqsc <qmgr>