Sun Java logo     上一頁      目錄      索引      下一頁     

Sun logo
Sun Java System Message Queue 3 2005Q4 管理指南 

第 5 章
管理代理程式

本章說明如何使用 imqcmd 公用程式來管理代理程式及其服務。本章包含下列各節:

本章未包含有關管理代理程式的所有相關主題。下列幾章包含其他主題:


必要條件

您可以使用 imqcmdimqusermgr 指令行公用程式來管理代理程式。管理代理程式前,請先執行以下作業:


使用 imqcmd 公用程式

imqcmd 公用程式能讓您管理代理程式及其服務。

如需 imqcmd 指令的語法、子指令和選項的詳細資訊,請參閱第 13 章「指令行參照」。如需管理實體目標的詳細資訊,請參閱第 15 章「實體目標特性參照」

顯示說明

若要顯示 imqcmd 公用程式的說明,請使用 -h-H 選項,且不可使用子指令。您無法取得特定子指令的說明。

例如,下列指令顯示 imqcmd 的說明:

imqcmd -H

如果您輸入的指令行除了子指令或其他選項之外,還包含 -h-H 選項,則 imqcmd 公用程式只會處理 -h-H 選項。忽略指令行的所有其他項目。

顯示產品版本

若要顯示 Message Queue 產品版本,您可以使用 -v 選項。例如:

imqcmd -v

如果您輸入的指令行除了子指令或其他選項之外,還包含 -v 選項,則 imqcmd 公用程式只會處理 -v 選項。忽略指令行的所有其他項目。

指定使用者名稱和密碼

每個 imqcmd 子指令都要經由使用者儲存庫進行認證,因此需要使用者名稱和密碼。只有使用 -h 或 -H 選項來顯示說明的指令以及使用 -v 選項來顯示產品版本的指令除外。

指定使用者名稱

使用 -u 選項指定管理使用者名稱。如果省略使用者名稱,指令會提示您輸入。例如,下列指令會顯示預設代理程式的相關資訊:

imqcmd query bkr -u admin

為了方便您閱讀,本章範例中 -u 選項的引數都顯示預設使用者名稱 admin。在生產環境中應該使用自訂使用者名稱。

指定密碼

您可以使用下列任一方法指定密碼:

舊版 Message Queue 可讓您在 imqcmd 指令行上使用 -p 選項來指定密碼。此選項已經被停用,將從未來的版本中移除。

指定代理程式名稱和連接埠

imqcmd 的預設代理程式是本地主機上執行的代理程式,預設連接埠是 7676

對遠端主機上執行的代理程式或非預設連接埠上偵聽的代理程式下達指令時,必須使用 -b 選項來指定代理程式的主機和連接埠。

範例

本節中的範例說明如何使用 imqcmd

第一個範例列出在使用連接埠 7676localhost 上執行的代理程式之特性,因此不需要 -b 選項。指令使用預設管理使用者名稱 (admin) 並且省略密碼,指令會提示您輸入密碼。

imqcmd query bkr -u admin

下列範例會列出在使用連接埠 1564 的主機 myserver 上執行之代理程式的特性。使用者名稱是 aladdin。(若要讓此指令可以運作,需要更新使用者儲存庫,並將使用者名稱 aladdin 加入 admin 群組中。)

imqcmd query bkr -b myserver:1564 -u aladdin

下列範例列出在使用連接埠 7676localhost 上執行的代理程式的特性。該指令的初始逾時設定為 20 秒,重試 (逾時後) 次數設定為 7。使用者密碼位於 myPassfile 密碼檔案中,該檔案位於呼叫指令時所在的目前目錄中。

imqcmd query bkr -u admin -passfile myPassfile -rtm 20 -rtr 7

如果您要與代理程式使用安全連線,可以在範例中使用 -secure 選項。-secure 選項會讓 imqcmd 使用已經配置並啟動的 ssladmin 服務。


顯示代理程式資訊

若要查詢並顯示單一代理程式的相關資訊,請使用 query bkr 子指令。

query bkr 子指令的語法如下:

imqcmd query bkr -b hostName:portNumber

該子指令會列出預設代理程式或指定主機和連接埠上的代理程式之特性目前的設定。它還顯示連線至指定代理程式的執行中代理程式 (在多重代理程式叢集中) 清單。

例如:

imqcmd query bkr -u admin

提示您輸入密碼後,指令會輸出類似下面的內容:

版本

3.6

實例名稱

imqbroker

主要連接埠

7676

                                                   

系統中目前的訊息數目

0

系統中的目前訊息容量 (位元組)

0

停用訊息佇列中目前的訊息數目

0

停用訊息佇列中目前訊息的總位元組

0

記錄停用的訊息

true

截斷停用訊息佇列的訊息內文

false

                                                   

系統中的最大訊息數目

無限制 (-1)

系統中的訊息最大容量

無限制 (-1)

最大訊息容量

70m

                                                   

自動建立佇列

true

自動建立主題

true

自動建立最大使用中用戶數佇列

1

自動建立最大備份用戶數佇列

0

                                                   

叢集代理程式清單 (使用中)

叢集代理程式清單 (已配置)

叢集主代理程式

叢集 URL

                                                   

記錄層級

INFO

記錄自動重建的間隔 (以秒為單位)

604800

記錄自動重建的大小 (位元組)

無限制 (-1)


更新代理程式特性

您可以使用 update bkr 子指令更新下列代理程式特性:

update bkr 子指令的語法如下:

imqcmd update bkr [-b hostName:portNumb er]-o attribute=value [[-o attribute=value1]...]

該子指令變更預設代理程式或指定主機和連接埠上的代理程式的指定屬性。例如,以下指令會關閉佇列目標的自動建立功能:

imqcmd update bkr -o "imq.autocreate.queue=false" -u admin

第 14 章「代理程式特性參照」中描述了這些特性。


暫停和繼續代理程式

啟動代理程式之後,您可以使用 imqcmd 子指令控制代理程式的狀態。

暫停代理程式

暫停代理程式會暫停代理程式的連線服務執行緒,這將導致代理程式停止偵聽連線連接埠。因此,代理程式將無法繼續接受新的連線、接收訊息或派送訊息。

但是,暫停代理程式不會暫停 admin 連線服務。此服務可讓您執行所需的管理工作,以管理代理程式的訊息流量。暫停代理程式也不會暫停 cluster 連線服務。但是,叢集中的訊息傳送會根據叢集中不同代理程式所執行的傳送功能而有差異。因此,暫停叢集中的代理程式可能會造成某些訊息流量變慢。

pause bkr 子指令的語法如下:

imqcmd pause bkr [-b hostName:portNumber]

該指令會暫停預設代理程式或指定主機和連接埠上的代理程式。

以下指令會暫停連接埠 1588myhost 執行的代理程式。

imqcmd pause bkr -b myhost:1588 -u admin

您也可以暫停個別連線服務和個別實體目標。如需更多資訊,請參閱暫停和繼續連線服務暫停和繼續實體目標

繼續代理程式

繼續代理程式會重新啟動代理程式的服務執行緒,並且此代理程式會繼續偵聽連接埠。

resume bkr 子指令的語法如下:

imqcmd resume bkr [-b hostName:portNumber]

該子指令會繼續預設代理程式或指定主機和連接埠上的代理程式。

以下指令會繼續連接埠 7676localhost 執行的代理程式:

imqcmd resume bkr -u admin


關閉和重新啟動代理程式

適當地關閉代理程式會終止代理程式程序。代理程式停止接受新的連線和訊息,它將完成現有訊息的傳送並終止代理程式程序。

shutdown bkr 子指令的語法如下:

imqcmd shutdown bkr [-b hostName:portNumber]

該子指令會關閉預設代理程式或指定主機和連接埠上的代理程式。

以下指令會關閉連接埠 1572ctrlsrv 執行的代理程式:

imqcmd shutdown bkr -b ctrlsrv:1572 -u admin

使用 restart bkr 子指令關閉和重新啟動代理程式。restart bkr 子指令的語法如下:

imqcmd restart bkr [-b hostName:portNumber]

該子指令使用首次啟動代理程式時指定的選項,關閉預設代理程式或指定主機和連接埠上的代理程式後再重新啟動。若要選擇其他選項,請關閉代理程式後再重新啟動,指定您要的選項。


顯示代理程式度量

若要顯示有關代理程式的度量資訊,請使用 metrics bkr 子指令。

metrics bkr 子指令的語法如下:

imqcmd metrics bkr [-b hostName:portNumber]
       [-m metricType] [-int interval] [-msp numSamples]

該子指令顯示預設代理程式或指定主機和連接埠上的代理程式的代理程式度量。

您可以使用 -m 選項,指定下列一種要顯示的度量類型:

使用 -int 選項,指定顯示度量的間隔時間 (以秒為單位)。預設為 5 秒鐘。

使用 -msp 選項,指定輸出中顯示的範例數目。預設的數目為沒有限制 (無限)。

例如,若要取得每 10 秒時間間隔,代理程式傳入與傳出的訊息速率,請使用:

imqcmd metrics bkr -m rts -int 10 -u admin

此指令的輸出如下:

--------------------------------------------------------

訊息/秒鐘    訊息容量/秒鐘    Pkts /秒鐘    Pkt 位元組/秒鐘   

輸入  輸出   輸入     輸出    輸入  輸出    輸入     輸出  

--------------------------------------------------------

0     0      27      56      0     0      38      66   

10    0     7365     56      10    10    7457    1132  

0     0      27      56      0     0      38      73   

0     10     27     7402     10    20    1400    8459  

0     0      27      56      0     0      38      73   

如需有關代理程式收集和報告之資料的詳細說明,請參閱代理程式通用度量


管理連線服務

imqcmd 公用程式包括允許您執行以下連線服務管理工作的子指令:

代理程式支援來自應用程式用戶端和管理用戶端的連線。目前,Message Queue 代理程式可提供的連線服務如表 5-1 中所示。如表格中所示,每種服務都與使用的服務類型 (應用程式用戶端為 NORMAL,管理用戶端為 ADMIN) 和基本傳輸協定相關。

表 5-1 代理程式支援的連線服務  

服務名稱

服務類型

協定類型

jms

NORMAL

tcp

ssljms (Enterprise Edition)

NORMAL

tls (SSL 型安全性)

httpjms (Enterprise Edition)

NORMAL

http

httpsjms (Enterprise Edition)

NORMAL

https (SSL 型安全性)

admin

ADMIN

tcp

ssladmin (Enterprise Edition)

ADMIN

tls (SSL 型安全性)

您可以使用 imqcmd 子指令來管理整個連線服務,或管理個別連線服務。如果子指令的目標是個別服務,請使用 -n 選項,以表 5-1 之 [服務名稱] 欄位中所列的名稱之一進行指定。

列出連線服務

若要列出代理程式上可用的連線服務,請使用 list svc 子指令。

list svc 子指令的語法如下:

imqcmd list svc [-b hostName:portNumber]

該子指令列出預設代理程式或指定主機和連接埠上的代理程式上的所有連線服務。

以下指令列出在使用連接埠 7676localhost 上執行的代理程式上的所有服務:

imqcmd list svc -u admin

此指令將輸出以下資訊:

------------------------------------------------

服務名稱         連接埠號           服務狀態

------------------------------------------------

admin           41844 (動態)       執行中

httpjms         -                  未知

httpsjms        -                  未知

jms             41843 (動態)       執行中

ssladmin        動態               未知

ssljms          動態               未知

顯示連線服務資訊

若要查詢並顯示單一服務的相關資訊,請使用 query 子指令。

query svc 子指令的語法如下:

imqcmd query svc -n serviceName [-b hostName:portNumber]

query svc 子指令會顯示在預設代理程式或指定主機和連接埠的代理程式上所執行的指定服務之相關資訊。

例如:

imqcmd query svc -n jms -u admin

提示您輸入密碼後,指令會輸出類似下面的內容:

服務名稱

jms

服務狀態

執行中

連接埠號

60920 (動態)

                                     

目前配置的執行緒數目

0

目前的連線數目

0

                                     

最小執行緒數目

10

最大執行緒數目

1000

更新連線服務特性

您可以使用 update 子指令變更表 5-2 中所列出的一個或多個服務特性的值。

表 5-2 imqcmd 更新的連線服務特性

特性

說明

port

指定給要更新的服務之連接埠 (不適用於 httpjms 或 httpsjms)。0 值表示連接埠對映器會動態配置連接埠。

minThreads

指定給服務的執行緒之最小數量。

maxThreads

指定給服務的最大執行緒數目。

update 子指令的語法如下:

imqcmd update svc -n serviceName [-b hostName:portNumber
         -o attribute=value [-o attribute=value1]...

該子指令更新在預設代理程式或指定主機和連接埠上的代理程式上執行的指定服務的指定屬性。如需服務屬性的描述,請參閱連線特性

以下指令將指定給 jms 服務之執行緒的最小數目變更至 20。

imqcmd update svc -n jms -o “minThreads=20” -u admin

顯示連線服務度量

若要顯示有關單一服務的度量資訊,請使用 metrics 子指令。

metrics 子指令的語法如下:

imqcmd metrics svc -n serviceName [-b hostName:portNumber] [-m metricType]
    [-int interval] [-msp numSamples]

該子指令顯示預設代理程式或指定主機和連接埠上的代理程式上的指定服務之度量。

使用 -m 選項指定要顯示的度量類型:

使用 -int 選項,指定顯示度量的間隔時間 (以秒為單位)。預設為 5 秒鐘。

使用 -msp 選項,指定輸出中顯示的範例數目。預設的數目為沒有限制 (無限)。

例如,若要取得由 jms 連線服務處理之訊息和封包的累計總數,請使用:

imqcmd metrics svc -n jms -m ttl -u admin

提示您輸入密碼後,指令會輸出類似下面的內容:

-------------------------------------------------

  訊息        訊息容量       Pkts     Pkt 位元組   

輸入  輸出  輸入    輸出   輸入  輸出  輸入    輸出  

-------------------------------------------------

164  100  120704  73600  282  383  135967  102127

657  100  483552  73600  775  876  498815  149948

如需使用 imqcmd 報告連線服務度量的更多詳細說明,請參閱連線服務度量

暫停和繼續連線服務

若要暫停管理服務 (無法暫停) 之外的任何服務,請使用 pause svc resume svc 子指令。

pause svc 子指令的語法如下:

imqcmd pause svc -n serviceName [-b hostName:portNumber]

該子指令暫停在預設代理程式或指定主機和連接埠上代理程式執行的指定服務。例如,下列指令會暫停預設代理程式上所執行的 httpjms 服務。

imqcmd pause svc -n httpjms -u admin

暫停服務會造成以下影響:

若要繼續服務,請使用 resume svc 子指令。

resume svc 子指令的語法如下:

imqcmd resume svc -n serviceName[-b hostName:portNumber]

該子指令會繼續在預設代理程式或指定主機和連接埠上代理程式執行的指定服務。


取得有關連線的資訊

imqcmd 公用程式包括可讓您列出和取得連線相關資訊的子指令。

list cxn 子指令列出指定服務名稱的所有連線。list cxn 子指令的語法如下:

imqcmd list cxn [-svn serviceName] [-b hostName:portNumber]

該子指令列出預設代理程式上指定服務名稱的所有連線,或指定主機和連接埠上代理程式上的所有連線。如果未指定服務名稱,則會列出所有服務。

例如,下列指令會列出預設代理程式上的所有連線:

imqcmd list cxn -u admin

提示您輸入密碼後,指令會輸出類似下面的內容:

列出以下指定的代理程式上所有連線:

-----------------------------------

主機                   主要連接埠

------------------------------------

localhost              7676

---------------------------------------------------------------------------

連線 ID               使用者   服務       產生者      用戶      主機

---------------------------------------------------------------------------

1964412264455443200   guest   jms       0          1         127.0.0.1

1964412264493829311   admin   admin     1          1         127.0.0.1

成功地列出連線。

若要查詢並顯示單一服務的相關資訊,請使用 query 子指令。

query cxn -n connectionID [-b hostName:portNumber]

該子指令會顯示在預設代理程式或指定主機和連接埠之代理程式上,指定連線的相關資訊。

例如:

imqcmd query cxn -n 421085509902214374 -u admin

提示您輸入密碼後,指令會輸出類似下面的內容:

連線 ID

421085509902214374

使用者

guest

服務

jms

產生者

0

用戶

1

主機

111.22.333.444

連接埠

60953

用戶端 ID

用戶端平台    


管理長期訂閱

您可以執行下列一項或多項作業,使用 imqcmd 子指令來管理代理程式的長期訂閱:

長期訂閱是指由用戶端註冊為長期的主題訂閱;它具有唯一的身份,並要求代理程式保留此訂閱的訊息 (即使它的用戶成為非使用中的用戶)。通常,代理程式僅在為持久訂閱者保留的訊息過期時,才刪除該訊息。

若要列出指定實體目標的長期訂閱,請使用 list dur 子指令。list dur 子指令的語法如下:

imqcmd list dur -d destName

例如,下列指令使用本地主機之預設連接埠上執行的代理程式,列出主題 SPQuotes 的所有長期訂閱:

imqcmd list dur -d SPQuotes

對於主題的每個長期訂閱,list dur 子指令會傳回長期訂閱的名稱、使用者的用戶端 ID、在此主題上形成佇列的訊息數目以及長期訂閱的狀態 (使用中/非使用中)。例如:

名稱          用戶端 ID      訊息          長期訂閱

                            數目           狀態

----------------------------------------------------------------

myDurable   myClientID       1           INACTIVE

您可以使用從 list dur 子指令傳回的資訊,識別您可能要銷毀或要為其清除訊息的長期訂閱。

purge dur 子指令使用指定的用戶端識別碼,清除指定長期訂閱的所有訊息。purge dur 子指令的語法如下:

imqcmd purge dur -n subscrName -c clientID

destroy dur 子指令使用指定的用戶端識別碼,銷毀指定的長期訂閱。destroy dur 子指令的語法如下:

imqcmd destroy dur -n subscrName -c clientID

例如,下列指令會銷毀長期訂閱 myDurable 和 clientID myClientID

imqcmd destroy dur -n myDurable -c myClientID


管理作業事件

由用戶端應用程式啟動的所有作業事件可由代理程式追蹤。這些作業事件可以是簡單的 Message Queue 作業事件,或由分散式作業事件 (XA 資源) 管理員所管理的分散式作業事件。

每個作業事件都有 Message Queue 作業事件 ID,即在代理程式上唯一識別作業事件的 64 位元的號碼。分散式作業事件還有由分散式作業事件管理員指定的分散式作業事件 ID (XID),此 ID 長達 128 個位元組。Message Queue 可維護 Message Queue 作業事件 ID 與 XID 的關聯。

如果發生故障,分散式作業事件很可能未經確定便處於 PREPARED 狀態。因此,作為管理員,您可能需要監視作業事件,然後回轉或確定處於準備狀態的作業事件。

若要列出代理程式追蹤的所有作業事件,請使用 list txn 指令。list txn 子指令的語法如下:

imqcmd list txn

例如,以下指令列出代理程式中的所有作業事件。

imqcmd list txn

對於每個作業事件,list 子指令會傳回作業事件 ID、狀態、使用者名稱、訊息或確認的數目以及建立時間。例如:

---------------------------------------------------------------

事務處理 ID      狀態     使用者名稱  訊息數目/       建立時間

                                    回應數目

---------------------------------------------------------------

64248349708800  PREPARED  guest      4/0      1/30/02 10:08:31 AM

64248371287808  PREPARED  guest      0/4      1/30/02 10:09:55 AM

此指令顯示代理程式中的所有本機作業事件和分散式作業事件。您僅能確定或回轉處於 PREPARED 狀態的作業事件。如果您知道由於故障使作業事件處於此狀態,並且此作業事件未處於由分散式作業事件管理員確定的過程中,您應確定或回轉此作業事件。

例如,如果代理程式的自動回轉特性設定為 false (請參閱表 14-2),則您必須在啟動代理程式時手動確定或回轉處於 PREPARED 狀態的作業事件。

list 子指令還顯示在作業事件中產生的訊息數目,以及在作業事件 (#Msgs/#Acks) 中回應的訊息數目。這些訊息不會被傳送,並且確認也不會被處理,直至作業事件被確定。

query 子指令可讓您查閱相同的資訊以及一些其他值:用戶端 ID、連線識別以及分散式作業事件 ID (XID)。query txn 子指令的語法如下:

imqcmd query txn -n transactionID

例如,下列範例的輸出內容應該如下:

imqcmd query txn -n 64248349708800

用戶端 ID

連線

guest@192.18.116.219:62209->jms:62195

建立時間

1/30/02 10:08:31 AM

確認數目

0

訊息數目          

4

狀態

PREPARED

作業事件 ID

64248349708800

使用者名稱

guest

XID

6469706F6C7369646577696E6465723130313234313431313030373230

使用 commitrollback 子指令,確定或回轉分散式作業事件。如前面所提及,僅可確定或回轉處於 PREPARED 狀態的作業事件。

commit 子指令的語法如下:

imqcmd commit txn -n transactionID

例如:

imqcmd commit txn -n 64248349708800

rollback. 子指令的語法如下:

imqcmd rollback txn -n transactionID

請參閱表 14-2 中的 imq.transaction.autorollback 特性,以取得更多資訊。

還可配置代理程式,以在啟動代理程式時自動回轉處於 PREPARED 狀態的作業事件。



上一頁      目錄      索引      下一頁     


文件號碼:819-3562。  Copyright © 2005 Sun Microsystems, Inc. 版權所有。