如何在IBM MQ中的集群中标识队列和队列名称列表,以及在集群中添加/删除队列?

时间:2017-01-28 05:00:55

标签: ibm-mq

我需要在队列管理器中识别群集队列。我需要输出作为队列名称和clustername。

将队列添加到群集中哪些队列不在群集中 从群集中删除队列中的队列

1 个答案:

答案 0 :(得分:2)

要显示在本地队列管理器上设置了CLUSTERCLUSNL属性的所有队列,您可以使用WHERE参数搜索CLUSTERCLUSNL的队列NE属性''(非等于)printf "DISPLAY Q(*) WHERE(CLUSTER NE '')\nDISPLAY Q(*) WHERE(CLUSNL NE '')" | runmqsc <qmgr> | grep "QUEUE(" | awk -F'[()]' '{print $2}'(空白)。

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[$1] = $2 } END { printValues() }'

下面的变化将打印带有“QUEUE,CLUSTER,CLUSNL”的CSV输出。 printValues语法来自@ mike.dld,回答这篇文章“Print part of an array or a file and sort in shell

CLUSTER

要显示本地队列管理器上没有设置CLUSNLWHERE属性的所有队列,您可以使用CLUSTER参数搜索{{1}的队列}和CLUSNL属性EQ(EQUAL)到''(空白)。 sort,uniq和awk帮助仅显示两者都是空白的那些。

printf "DISPLAY Q(*) WHERE(CLUSTER EQ '')\nDISPLAY Q(*) WHERE(CLUSNL EQ '')" | runmqsc <qmgr> | grep "QUEUE(" | awk -F'[()]' '{print $2}' | sort | uniq -c | awk '{ if ($1 ~ /2/) {print $2}}'

要向群集添加队列,您需要ALTERCLUSTER属性设置为有效群集的名称。您还可以使用CLUSNL属性指定NAMELISTNAMELIST必须包含至少一个群集名称,但可以包含多个群集名称,以允许队列位于多个群集中。

echo "ALTER QL(TEST.Q) CLUSTER(RAJCLUS)" | runmqsc <qmgr>

要从群集中删除队列,您需要删除CLUSTERCLUSNL属性。

echo "ALTER QL(TEST.Q) CLUSTER('') CLUSNL('')" | runmqsc <qmgr>