この章では、imqcmd ユーティリティーを使用して、ブローカおよびそのサービスを管理する方法について説明します。この章では、次の節について説明します。
この章ではブローカの管理に関連したすべてのトピックは扱いません。その他のトピックは、次の章で個別に扱っています。
ブローカでの物理的送信先の管理。物理的送信先の作成、表示、更新、破棄の方法、およびデッドメッセージキューの使い方といったトピックの詳細は、第 6 章「物理的送信先の管理」を参照してください。
ブローカのセキュリティー設定。ユーザー認証、アクセス制御、暗号化、パスワードファイル、監査ロギングなどのトピックの詳細は、第 7 章「セキュリティーの管理」を参照してください。
ブローカの管理には、imqcmd および imqusermgr コマンド行ユーティリティーを使用します。ブローカを管理する前に、次の作業が必要です。
imqbrokerd ユーティリティーコマンドを使用して、ブローカを起動します。ブローカを実行するまで、ほかのコマンド行ユーティリティーは使用できません。
Message QueueTM 管理ユーザーを設定するか、デフォルトアカウントを使用するかを決定します。管理コマンドを使用する場合、ユーザー名とパスワードを指定する必要があります。
Message Queue をインストールすると、デフォルトの単層ファイルのユーザーリポジトリがインストールされます。リポジトリは 2 つのデフォルトエントリと一緒に出荷されます (管理ユーザーとゲストユーザー)。Message Queue をテストする場合、デフォルトのユーザー名とパスワード (admin/admin) を使用して、imqcmd ユーティリティーを実行できます。
本稼動システムをセットアップする場合は、管理ユーザーの認証および認可を設定する必要があります。ファイルベースのユーザーリポジトリの設定、または LDAP ディレクトリサーバーを使用する設定の詳細は、第 7 章「セキュリティーの管理」を参照してください。本稼働環境では、セキュリティー上の理由によりデフォルト以外のユーザー名とパスワードを使用することをお勧めします。
ブローカとの安全な接続を使用する場合、ターゲットブローカインスタンスで ssladmin サービスを設定し有効化します。詳細は、「メッセージの暗号化」を参照してください。
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
この章の例を読みやすくするために、デフォルトのユーザー名 admin は -u オプションの引数として示しています。本稼動環境では、カスタムユーザー名を使用します。
パスワードは次のいずれかの方法で指定します。
パスワードファイル (passfile) を作成し、そのファイルにパスワードを入力します。コマンド行で、-passfile オプションを使用してパスワードファイルの名前を指定します。
コマンドからパスワードの入力が要求されるようにします。
これまでのバージョンの Message Queue では、-p オプションを使用して imqcmd コマンド行にパスワードを指定できました。このオプションは廃止される可能性があり、最終的には削除される予定です。
imqcmd のデフォルトブローカは、ローカルホストで実行中のブローカであり、デフォルトポートは 7676 です。
リモートホストで実行中のブローカまたはデフォルト以外のポートで待機中のブローカ、あるいはその両方にコマンドを発行する場合、-b オプションを使用してブローカのホストとポートを指定する必要があります。
この節の例は、imqcmd の使い方を表しています。
最初の例では、localhost のポート 7676 で実行中のブローカのプロパティーを一覧表示しているため、-b オプションは不要です。このコマンドはデフォルトの管理ユーザー名 (admin) を使用してパスワードを省略しています。したがってコマンドで入力が要求されています。
imqcmd query bkr -u admin
次の例では、ホスト myserver のポート 1564 で実行中のブローカのプロパティーを一覧表示しています。ユーザー名は aladdin です。このコマンドが機能するためには、ユーザーリポジトリを更新して、aladdin を admin グループに追加する必要がある場合があります。
imqcmd query bkr -b myserver:1564 -u aladdin
次の例では、localhost のポート 7676 で実行中のブローカのプロパティーを一覧表示しています。このコマンドの最初のタイムアウトは 20 秒に設定され、タイムアウト後の再試行回数が 7 回に設定されています。ユーザーのパスワードは、コマンドを呼び出したときに現在のディレクトリにある myPassfile と呼ばれるパスワードファイル内に格納されています。
imqcmd query bkr -u admin -passfile myPassfile -rtm 20 -rtr 7
ブローカとの安全な接続を確立するために、これらの例では -secure オプションを指定することもできます。ssladmin サービスが設定および起動されていれば、imqcmd は -secure オプションを指定したときに ssladmin サービスを使用します。
シングルブローカに関する情報のクエリーと表示を行うには、query bkr サブコマンドを使用します。
次に示すのは、query bkr サブコマンドの構文です。
imqcmd query bkr -b hostName: portNumber
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカの現在のプロパティーの設定を一覧表示します。また、特定のブローカに接続している実行中のブローカ (マルチブローカクラスタ内のブローカ) のリストも表示されます。
imqcmd query bkr -u admin
パスワードの入力を要求した後、コマンドは次のような出力を生成します。
Version 3.6 Instance Name imqbroker Primary Port 7676 Current Number of Messages in System 0 Current Total Message Bytes in System 0 Current Number of Messages in Dead Message Queue 0 Current Total Message Bytes in Dead Message Queue 0 Log Dead Messages true Truncate Message Body in Dead Message Queue false Max Number of Messages in System unlimited (-1) Max Total Message Bytes in System unlimited (-1) Max Message Size 70m Auto Create Queues true Auto Create Topics true Auto Created Queue Max Number of Active Consumers 1 Auto Created Queue Max Number of Backup Consumers 0 Cluster Broker List (active) Cluster Broker List (configured) Cluster Master Broker Cluster URL Log Level INFO Log Rollover Interval (seconds) 604800 Log Rollover Size (bytes) unlimited (-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]
このコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカを停止します。
次のコマンドでは、myhost のポート 1588 で実行しているブローカが停止されます。
imqcmd pause bkr -b myhost:1588 -u admin
個々の接続サービス、および個々の物理的送信先も停止できます。詳細は、「接続サービスの停止および再開」 と、「物理的送信先の停止と再開」を参照してください。
ブローカを再開すると、ブローカのサービススレッドが再び有効になり、ブローカはポートでの待機を再開します。
次に示すのは、resume bkr サブコマンドの構文です。
imqcmd resume bkr [-b hostName: portNumber]
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカを再開します。
次のコマンドでは、localhost のポート 7676 で実行していたブローカが再開されます。
imqcmd resume bkr -u admin
ブローカをシャットダウンすると、正常にブローカプロセスを終了することができます。ブローカは新しい接続やメッセージを受け入れるのを止めて、既存のメッセージの配信を完了し、ブローカプロセスを終了します。
次に示すのは、shutdown bkr サブコマンドの構文です。
imqcmd shutdown bkr [-b hostName: portNumber]
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカをシャットダウンします。
次のコマンドでは、ctrlsrv のポート 1572 で実行していたブローカがシャットダウンされます。
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 オプションを使用します。
ttl ブローカとの間で入出力されているメッセージとパケットのフローに関するメトリックスを表示します (デフォルトのメトリックスタイプ)。
rts ブローカとの間で入出力されているメッセージとパケットの 1 秒あたりのフローレートに関するメトリックスを表示します。
cxn 接続、仮想メモリーヒープ、およびスレッドを表示します。
メトリックスを表示する間隔を秒単位で指定するには、-int オプションを使用します。デフォルトは 5 秒です。
出力で表示するサンプル数を指定するには、-msp オプションを使用します。デフォルトは無制限です (無限)。
たとえば、ブローカに入力するメッセージフローとブローカから出力されるメッセージのフローレートを10 秒間隔で取得するには、次のコマンドを使用します。
imqcmd metrics bkr -m rts -int 10 -u admin
このコマンドでは、次のような情報が出力されます。
-------------------------------------------------------- Msgs/sec Msg Bytes/sec Pkts/sec Pkt Bytes/sec In Out In Out In Out In Out -------------------------------------------------------- 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 Message Queue の接続サービス
サービス名 |
サービスタイプ | |
---|---|---|
NORMAL | ||
NORMAL | ||
NORMAL | ||
NORMAL | ||
ADMIN |
TCP |
|
ADMIN |
TLS (SSL ベースセキュリティー) |
imqcmd サブコマンドを使用して、接続サービス全体を管理するか、または特定の接続サービスを管理することができます。サブコマンドの対象が特定のサービスの場合は、-n オプションを使用して、表 5–1の「サービス名」列に示されたいずれかの名前を指定します。
ブローカで使用できる接続サービスを一覧表示するには、list svc サブコマンドを使用します。
次に示すのは、list svc サブコマンドの構文です。
imqcmd list svc [-b hostName: portNumber]
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカの接続サービスをすべて一覧表示します。
次のコマンドでは、localhost のポート 7676 で実行しているブローカのすべてのサービスが一覧表示されます。
imqcmd list svc -u admin
このコマンドでは、次のような情報が出力されます。
------------------------------------------------ Service Name Port Number Service State ------------------------------------------------ admin 41844 (dynamic) RUNNING httpjms - UNKNOWN httpsjms - UNKNOWN jms 41843 (dynamic) RUNNING ssladmin dynamic UNKNOWN ssljms dynamic UNKNOWN |
シングルサービスに関する情報のクエリーと表示を行うには、query サブコマンドを使用します。
次に示すのは、query svc サブコマンドの構文です。
imqcmd query svc -n serviceName [-b hostName:portNumber]
query svc サブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカで実行している特定のサービスに関する情報を一覧表示します。
たとえば、次のように指定します。
imqcmd query svc -n jms -u admin
パスワードの入力を要求した後、コマンドは次のような出力を生成します。
Service Name jms Service State RUNNING Port Number 60920 (dynamic) Current Number of Allocated Threads 0 Current Number of Connections 0 Min Number of Threads 10 Max Number of Threads 1000 |
表 5–2 に示す 1 つ以上のサービスのプロパティーの値を変更するには、update サブコマンドを使用します。
表 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 オプションを使用します。
ttl 指定した接続サービスを使ってブローカとの間で入出力されているメッセージとパケットのフローに関するメトリックスを表示します (デフォルトのメトリックスタイプ)。
rts 指定した接続サービスを使ってブローカとの間で入出力されているメッセージとパケットのフローレート (1 秒あたり) に関するメトリックスを表示します。
cxn 接続、仮想メモリーヒープ、およびスレッドを表示します。
メトリックスを表示する間隔を秒単位で指定するには、-int オプションを使用します。デフォルトは 5 秒です。
出力で表示するサンプル数を指定するには、-msp オプションを使用します。デフォルトは無制限です (無限)。
たとえば、jms 接続サービスによって処理されたメッセージとパケットの累計数を取得するには、次のコマンドを使用します。
imqcmd metrics svc -n jms -m ttl -u admin
パスワードの入力を要求した後、コマンドは次のような出力を生成します。
------------------------------------------------- Msgs Msg Bytes Pkts Pkt Bytes In Out In Out In Out In Out ------------------------------------------------- 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
サービスを停止すると、次のような結果になります。
ブローカは、停止したサービスでの新たなクライアント接続の受け入れを止めます。Message Queue クライアントが新しい接続を開こうとすると、例外が発生します。
停止したサービスの既存の接続はすべて維持されますが、ブローカはサービスが再開されるまでこれらの接続のすべてのメッセージ処理を中断します。たとえば、クライアントがメッセージを送信しようとしても、サービスが再開されるまでは、send メソッドがそれを阻止します。
すでにブローカが受信済みのメッセージのメッセージ配信状態は維持されます。たとえば、トランザクションは中断されず、サービスが再開された時点でメッセージ配信も再開されます。
サービスを再開するには、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
パスワードの入力を要求した後、コマンドは次のような出力を生成します。
Listing all the connections on the broker specified by: ----------------------------------- Host Primary Port ------------------------------------ localhost 7676 --------------------------------------------------------------------------- Connection ID User Service Producers Consumers Host --------------------------------------------------------------------------- 1964412264455443200 guest jms 0 1 127.0.0.1 1964412264493829311 admin admin 1 1 127.0.0.1 Successfully listed connections. |
シングル接続サービスに関する情報のクエリーと表示を行うには、query サブコマンドを使用します。
query cxn -n connectionID [-b hostName:portNumber]
このサブコマンドは、デフォルトのブローカ、または指定したホストとポートのブローカの指定した接続に関する情報を表示します。
imqcmd query cxn -n 421085509902214374 -u admin
パスワードの入力を要求した後、コマンドは次のような出力を生成します。
Connection ID 421085509902214374 User guest Service jms Producers 0 Consumers 1 Host 111.22.333.444 Port 60953 Client ID Client Platform |
imqcmd サブコマンドを使用して、次のような操作を実行して、ブローカの永続サブスクリプションを管理できます。
永続サブスクリプションを一覧表示する
永続サブスクリプションのすべてのメッセージを消去する
永続サブスクリプションを破棄する
永続サブスクリプションとは、クライアントによって、永続的であると登録されたトピックのサブスクリプションのことです。このサブスクリプションには固有の識別情報があり、コンシューマがアクティブになっていないときでも、サブスクリプションのメッセージを保持するブローカが必要となります。通常、ブローカはメッセージの有効期限が切れたときだけ、保持していた永続サブスクライバのメッセージを削除します。
指定された物理的送信先の永続サブスクリプションを一覧表示するには、list dur サブコマンドを使用します。次に示すのは、list dur サブコマンドの構文です。
imqcmd list dur -d destName
たとえば、次のコマンドはローカルホストのデフォルトポートのブローカを使用する、トピック SPQuotes のすべての永続サブスクリプションを一覧表示します。
imqcmd list dur -d SPQuotes
list dur サブコマンドでは、トピックの永続サブスクリプションごとに、永続サブスクリプションの名前、ユーザーのクライアント ID、このトピックのキューに入っているメッセージの数、および永続サブスクリプションの状態 (アクティブまたは非アクティブ) を返します。たとえば、次のように指定します。
Name Client ID Number of Durable Sub Messages State ---------------------------------------------------------------- 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
クライアントアプリケーションによって開始されたトランザクションはすべてブローカによって記録されます。これらは、分散トランザクション (XA リソース) マネージャーによって管理される Message Queue の単純なトランザクション、または分散トランザクションです。
各トランザクションには、Message Queue トランザクション ID が付けられています。これは、ブローカのトランザクションを一意に識別するための 64 ビットの数字です。また、分散トランザクションには、分散トランザクションマネージャーによって割り当てられる最大 128 バイトの分散トランザクション ID (XID) が付けられます。Message Queue は、Message Queue トランザクション ID と XID の関連付けを保持します。
分散トランザクションの場合、障害が発生すると、トランザクションがコミットされずに PREPARED 状態のままになる可能性があります。このため、管理者は監視を行い、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 状態のトランザクションだけをコミット、またはロールバックすることができます。これを実行するのは、障害の発生でトランザクションが 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 状態のトランザクションが自動的にロールバックされるように、ブローカを設定することも可能です。