DeepSeek補全了我在網上找到的PPT的一頁內容,幫了大忙了。
人機協同,人工智能可以協助人更好的做事。
下面的內容是講解IBM MQ REST API 執行IBM MQ命令的PPT: MQSC for REST Tailored RESTful support for individual MQ objects and actions are in the works… However, to speed up full MQ admin support over REST we will be adding the ability to submit arbitrary MQSC commands over REST ?Gives complete MQSC coverage quickly ?Simple to convert existing scripts ?Does not benefit from improved usability HTTPS POST: https://host:port/ibmmq/v1/admin/action/qmgr/QMGR1/mqsc { “type”: “runCommand”, “parameters”: { “command”: “STOP CHANNEL(CHANNEL.TEST)” } } { “commandResponse”: [{ “completionCode”: 0, “reasonCode”: 0, “text”: [“AMQ8019: Stop IBM MQ channel accepted.”] }], “overallCompletionCode” : 0, “overallReasonCode” : 0 } Stopping a channel 但是我不知道完成的可執行的命令,如下所示: curl -k "https://localhost:9443/ibmmq/rest/v1/admin/qmgr/QM1/channel/TO.QM2" \ -X GET \ -u mqadmin:tgb5YHN6 請把上面的PPT改為可執行的命令
根據您提供的PPT內容,IBM MQ REST API 支持通過 MQSC 命令執行管理操作。以下是可執行的命令和詳細說明:
通過 REST API 執行 MQSC 命令的完整語法
bash
curl -k -X POST "https://localhost:9443/ibmmq/rest/v1/admin/action/qmgr/QM1/mqsc" \-u "mqadmin:tgb5YHN6" \-H "Content-Type: application/json" \-d '{"type": "runCommand","parameters": {"command": "DISPLAY CHSTATUS(CHAN1) TYPE(SVRCONN)"}}'
命令解析
HTTP 方法:
POST
?(不是 GET)URL 結構:
text
https://<host>:<port>/ibmmq/rest/v1/admin/action/qmgr/<QMGR_NAME>/mqsc
認證:
bash
-u "mqadmin:tgb5YHN6" # 用戶名:密碼
請求頭:
bash
-H "Content-Type: application/json" # 必須指定 JSON 內容類型
請求體:
json
{"type": "runCommand","parameters": {"command": "MQSC_COMMAND_HERE"} }
查詢通道狀態的具體實現
1. 查詢單個通道狀態
bash
curl -k -X POST "https://localhost:9443/ibmmq/rest/v1/admin/action/qmgr/QM1/mqsc" \-u "mqadmin:tgb5YHN6" \-H "Content-Type: application/json" \-d '{"type": "runCommand","parameters": {"command": "DISPLAY CHSTATUS(CHAN1) TYPE(SVRCONN)"}}'
2. 查詢所有通道狀態
bash
curl -k -X POST "https://localhost:9443/ibmmq/rest/v1/admin/action/qmgr/QM1/mqsc" \-u "mqadmin:tgb5YHN6" \-H "Content-Type: application/json" \-d '{"type": "runCommand","parameters": {"command": "DISPLAY CHSTATUS(*) TYPE(SVRCONN)"}}'
響應解析示例
成功響應:
json
{"commandResponse": [{"completionCode": 0,"reasonCode": 0,"text": ["AMQ8417: Display Channel Status details."," CHANNEL(CHAN1) TYPE(SVRCONN)"," STATUS(RUNNING) SUBSTATE(RECEIVE)"," ..."]}],"overallCompletionCode": 0,"overallReasonCode": 0 }
其他常用 MQSC 命令示例
1. 啟動通道
bash
curl -k -X POST "https://localhost:9443/ibmmq/rest/v1/admin/action/qmgr/QM1/mqsc" \-u "mqadmin:tgb5YHN6" \-H "Content-Type: application/json" \-d '{"type": "runCommand","parameters": {"command": "START CHANNEL(CHAN1)"}}'
2. 停止通道
bash
curl -k -X POST "https://localhost:9443/ibmmq/rest/v1/admin/action/qmgr/QM1/mqsc" \-u "mqadmin:tgb5YHN6" \-H "Content-Type: application/json" \-d '{"type": "runCommand","parameters": {"command": "STOP CHANNEL(CHAN1)"}}'
3. 重置通道
bash
curl -k -X POST "https://localhost:9443/ibmmq/rest/v1/admin/action/qmgr/QM1/mqsc" \-u "mqadmin:tgb5YHN6" \-H "Content-Type: application/json" \-d '{"type": "runCommand","parameters": {"command": "RESET CHANNEL(CHAN1)"}}'
權限配置要求
在執行命令前,確保用戶有足夠權限:
bash
# 授予 MQSC 命令執行權限 setmqaut -m QM1 -t qmgr -p mqadmin +connect +inq +ctrl setmqaut -m QM1 -n SYSTEM.ADMIN.COMMAND.QUEUE -t queue -p mqadmin +put
錯誤處理
1. 401 未授權錯誤
json
{"error": [{"msgId": "MQWB0105E", "reason": "2035"}]}
解決方案:檢查用戶權限并刷新安全設置
bash
refresh security type(ssl)
2. 404 接口未找到
json
{"error": [{"msgId": "MQWB0116E"}]}
解決方案:
確認使用正確的 URL 路徑:
/ibmmq/rest/v1/admin/action/qmgr/QM1/mqsc
檢查 MQ Web 服務器配置:
xml
<!-- mqwebuser.xml --> <feature>restAdmin-1.0</feature>
3. 500 命令執行錯誤
json
{"commandResponse": [{"completionCode": 2,"reasonCode": 2085,"text": ["AMQ8147: Web request for MQSC command ended with reason code 2085."]}] }
解決方案:檢查命令語法是否正確
自動化腳本示例
bash
#!/bin/bashQMGR="QM1" CHANNEL="CHAN1" USER="mqadmin" PASS="tgb5YHN6" URL="https://localhost:9443/ibmmq/rest/v1/admin/action/qmgr/$QMGR/mqsc"# 查詢通道狀態 response=$(curl -s -k -X POST "$URL" \-u "$USER:$PASS" \-H "Content-Type: application/json" \-d "{\"type\":\"runCommand\",\"parameters\":{\"command\":\"DISPLAY CHSTATUS($CHANNEL) TYPE(SVRCONN)\"}}")# 檢查狀態碼 overall_code=$(echo "$response" | jq -r '.overallCompletionCode') if [ "$overall_code" != "0" ]; thenecho "錯誤:命令執行失敗"echo "$response" | jq .exit 1 fi# 提取狀態信息 status=$(echo "$response" | grep -oP 'STATUS\(\K[^)]+' | head -1)# 檢查通道狀態 if [[ "$status" == "STOPPED" || "$status" == "RETRYING" ]]; thenecho "警報:通道 $CHANNEL 狀態異常 ($status)"# 發送警報郵件... fi
注意事項
版本兼容性:
REST API v1 適用于 IBM MQ 9.1.4+
確保使用?
v1
?而不是?v3
?路徑
命令限制:
不支持交互式命令
命令長度限制為 4096 字符
每個請求只能執行一個命令
性能考慮:
頻繁調用可能影響性能
復雜操作建議使用原生 MQSC
安全建議:
bash
# 使用更安全的證書認證 curl --cert client.pem --key client.key -X POST ...
通過這種 REST API 方式,您可以完全控制 IBM MQ 管理操作,同時保持與現代應用程序的集成能力。