由用戶端應用程式啟動的所有作業事件可由代理程式追蹤。這些作業事件可以是簡單的 Message Queue 作業事件,也可以是分散式作業事件 (XA 資源) 管理員所管理的分散式作業事件。
每個作業事件都有 Message Queue 作業事件 ID:代理程式上可用來唯一識別作業事件的 64 位元號碼。分散式作業事件另有由分散式作業事件管理程式指定的分散式作業事件 ID (XID),此 ID 長達 128 個位元組。Message Queue 會維護 Message Queue 作業事件 ID 與 XID 的關聯。
如果發生故障,分散式作業事件很可能一直處於 PREPARED 狀態,而不會被確定。因此,作為管理員,您可能需要監視作業事件,然後回復或確定處於準備狀態的作業事件。
若要列出代理程式追蹤的所有作業事件,請使用 list txn 指令。list tx 子指令的語法如下:
imqcmd list txn
例如,以下指令會列出代理程式中的所有作業事件。
imqcmd list txn
對於每個作業事件,list 子指令會傳回作業事件 ID、狀態、使用者名稱、訊息或確認的數目,以及建立時間。例如:
--------------------------------------------------------------- Transaction ID State User name # Msgs/ Creation time # Acks --------------------------------------------------------------- 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
Client ID Connection guest@192.18.116.219:62209->jms:62195 Creation time 1/30/02 10:08:31 AM Number of acknowledgments 0 Number of messages 4 State PREPARED Transaction ID 64248349708800 User name guest XID 6469706F6C7369646577696E6465723130313234313431313030373230 |
使用 commit 和 rollback 子指令,確定或回復分散式作業事件。如前所述,僅可確定或回復處於 PREPARED 狀態的作業事件。
commit 子指令的語法如下:
imqcmd commit txn -n transactionID
例如:
imqcmd commit txn -n 64248349708800
imqcmd rollback txn -n transactionID
如需更多資訊,請參閱表 14–2 中的 imq.transaction.autorollback 特性。
還可配置代理程式,以便在啟動代理程式時自動回復處於 PREPARED 狀態的作業事件。