|
|
| Sun ONE Message Queue 管理者ガイド |
第 6 章 ブローカとアプリケーションの管理
この章では、ブローカとブローカが提供するサービスの管理に関するタスクを実行する方法について説明します。これらのタスクの中には、特定のクライアントアプリケーションに依存していないものがあります。これには、次のようなものが含まれます。
ブローカの状態の制御。ブローカを停止、再開、シャットダウン、および再起動することができる
その他のブローカのタスクは、特定のアプリケーションのために実行されます。これらのタスクには、物理的な送信先、永続サブスクリプション、トランザクションなどの管理が含まれます。
MQ のメッセージは、ブローカの送信先を経由して、受信側またはサブスクライバにルートされる。管理者は、ブローカ上でこれらの送信先を作成する必要がある
この章では、コマンドユーティリティ (imqcmd) を使用して、これらのすべてのタスクを実行する方法について説明します。MQ メッセージサーバのグラフィカルインタフェースである管理コンソールを使用して、これらと同じタスクの多くを実行することができます。詳細は、第 4 章「管理コンソールのチュートリアル」を参照してください。永続サブスクリプションを保持するクライアントが、アクティブになっていない場合でも、 MQ によって、永続サブスクライバのリソースの割り当ておよび管理が行われる。MQ のリソースを節約するために、 MQ のコマンドツールを使用して、永続サブスクリプションに関する情報を入手し、永続サブスクリプションを破棄、あるいはそれらのメッセージをパージすることができる
MQ のトランザクションおよび分散トランザクションは、ブローカによって記録される。障害が発生した場合、トランザクションを手動でコミット、またはロールバックする必要がある
コマンドユーティリティ
コマンドユーティリティを使用すると、ブローカおよびブローカが提供するサービスを管理することができます。この節では、imqcmd コマンドの基本構文、サブコマンドのリスト、imqcmd オプションの概要について説明します。後続の節では、これらのコマンドを使用して、特定のタスクを実行する方法について説明します。
コマンドの構文
imqcmd コマンドの一般的な構文は、次のとおりです。
または
- imqcmd [subcommand argument ] options
-v、-h、および -H オプションを指定する場合、コマンド行で指定するその他のサブコマンドは実行できません。たとえば、次のコマンドを入力すると、バージョン情報が表示されますが、restart サブコマンドは実行されません。
- imqcmd subcommand argument [options ]
- imqcmd restart bkr -v
imqcmd のサブコマンド
コマンドユーティリティ (imqcmd) には、次の表 6-1 に示すようなサブコマンドが含まれています。
imqcmd のオプションの概要
表 6-2 に、imqcmd コマンドのオプションを一覧表示します。これらの使用方法については、後続のタスクごとの節を参照してください。
表 6-2    imqcmd のオプション
オプション
説明
-b hostName:port
-c "clientID"
トピックの永続サブスクライバの ID を指定する。詳細は、「永続サブスクリプションの管理」を参照してください。
-d topicName
トピック名を指定する。list dur サブコマンドや destroy dur サブコマンドと一緒に使用する。「永続サブスクリプションの管理」を参照
-f
-h
-H
-int interval
-javahome
使用する代替の Java 2 互換のランタイムを指定する (デフォルトでは、製品にバンドルされているランタイムが使用される)
-m metricType
表示するメトリックス情報のタイプを指定する。タイプには、次のどれかを指定する
rts ttl と同じ情報を提供するが、1 秒あたりのメッセージ数を指定する
このオプションは、metrics bkr サブコマンド、または metrics svc サブコマンドと一緒に使用する。次のコマンドでは、デフォルトブローカの cxn タイプのメトリックスが 5 秒ごとに表示される
-n targetName
ターゲット名を指定する。これはサブコマンドに応じて、物理的な送信先、サービス、トランザクション ID、または永続サブスクリプションの名前になる。送信先の管理での使用方法については、「送信先の管理」を参照
-o attribute=value
属性の値を指定する。これはサブコマンドの引数に応じて、ブローカの属性 (「ブローカのプロパティのクエリと更新」を参照)、サービス (「コネクションサービスの管理」を参照)、または送信先 (「送信先の管理」を参照) になる
-secure
ssladmin コネクションサービス (「手順 4. SSL ベースのクライアントを設定および実行する」、「コマンドユーティリティ (imqcmd)」を参照) を使用して、セキュリティ保護されたブローカへの管理コネクションを指定する
-p password
-s
-t destinationType
-tmp
-u name
-v
imqcmd のサブコマンドを実行するたびに、ホスト名とポート番号 (-b)、ユーザ名 (-u)、パスワード (-p)、および安全なコネクション (-secure) のオプションを指定する必要があります。ホスト名とポート番号を指定しない場合、デフォルト値が使用されます。ユーザ名とパスワードの情報を指定しないと、これらの情報の入力を要求されます。-secure オプションを指定しない場合は、コネクションがセキュリティ保護されません。
imqcmd を使用するための前提条件
imqcmd コマンドを使用してブローカを管理する場合、次のタスクを実行する必要があります。
imqbrokerd コマンドを使用して、ブローカを起動する
ブローカをポート 7676 のローカルホストで実行しない場合、-b オプションを使用して、ターゲットブローカを指定する
- コマンドユーティリティは、すでに起動しているブローカを管理する場合にのみ使用できる。コマンドユーティリティでは、ブローカを起動することはできない。「ブローカの起動」を参照
適切な管理者名とパスワードを指定する。この値を指定しないと、値の入力を要求される。 imqcmd を使用する操作はすべてユーザリポジトリに照らし合わされて認証される
- MQ をインストールすると、デフォルトの単層ファイルのユーザリポジトリがインストールされます。このファイルには、IMQ_HOME/etc/passwd (Solaris では /etc/imq/passwd ) という名前が付けられています。リポジトリには、管理ユーザ用とゲストユーザ用の 2 つのエントリがデフォルトで用意されています。これらのエントリを使用すれば、追加作業を行わずにブローカに接続することができます。たとえば、MQ をテストするだけなら、デフォルトのユーザ名とパスワード (admin/admin) を使用して、ユーティリティを実行できます。
- 運用システムをセットアップする場合は、ユーザを認証および認可するための追加作業を行う必要があります。また、ユーザリポジトリについて、既存の LDAP ディレクトリサーバを使用するオプションも用意されています。詳細は、「ユーザの認証」を参照してください。
例
次のコマンドでは、ポート 7676 の localhost で実行しているブローカのプロパティが一覧表示されます。
次のコマンドでは、ユーザ名が alladin で、ユーザパスワードが abracadabra のポート 1564 のmyserver で実行しているブローカのプロパティが一覧表示されます。
- imqcmd query bkr -u admin -p admin
ユーザ名の alladin が admin グループに割り当てられている場合、指定したブローカに、admin クライアントとして接続されます。
- imqcmd query bkr -b myserver:1564 -u alladin -p abracadabra
ブローカの状態の制御
ブローカの起動後に、次の imqcmd のサブコマンドを使用して、ブローカの状態を制御できます。
ブローカの停止
表 6-3 は、ブローカを制御するのに使用する imqcmd のサブコマンドについてまとめたものです。ポート 7676 の localhost で実行するブローカを対象にしない場合は、ブローカのホスト名とポート番号を指定する必要があります。
ブローカの再開
- ブローカを停止すると、ブローカのサービススレッドが中断されるため、ブローカはポートでの待機をやめます。その後で、ブローカへのメッセージフローを調整するのに必要な管理タスクを実行できます。たとえば、特定の送信先にメッセージが集中している場合、ブローカを停止して、メッセージソースの追跡、送信先のサイズの制限、送信先の破棄など、問題を解決するためのアクションを実行できます。
- 次のコマンドでは、ポート 1588 の myhost で実行しているブローカが停止されます。
- imqcmd pause bkr -b myhost:1588
ブローカのシャットダウン
- ブローカを再開すると、ブローカのサービススレッドが再び有効になり、ブローカはポートでの待機を再開します。次のコマンドでは、ポート 7676 の localhost で実行していたブローカが再開されます。
- imqcmd resume bkr
ブローカの再起動
- ブローカをシャットダウンすると、ブローカプロセスが終了します。これは正規の終了であるため、ブローカは新しいコネクションやメッセージを受け入れるのをやめて、既存のメッセージの配信を完了し、ブローカプロセスを終了します。次のコマンドでは、ポート 1572 の ctrlsrv で実行していたブローカがシャットダウンされます。
- imqcmd shutdown bkr -b ctrlsrv:1572
- ブローカをシャットダウンして、再起動します。次のコマンドでは、ポート 7676 の localhost で実行していたブローカが再起動されます。
- imqcmd restart bkr
ブローカのプロパティのクエリと更新
Command ユーティリティには、ブローカに関する情報を入手したり、ブローカのプロパティを更新したりすることができるサブコマンドが含まれています。表 6-4 にこれらのサブコマンドを一覧表示します。
表 6-4    情報の入手およびブローカの更新を行う imqcmd のサブコマンド
サブコマンドの構文
説明
query bkr -b hostName:port
デフォルトのブローカ、または指定したホストとポートのブローカの現在のプロパティの設定を一覧表示する。また、特定のブローカに接続している実行中のブローカ (マルチブローカクラスタ内の) のリストも表示される
reload cls
クラスタ内のすべてのブローカで、imq.cluster.brokerlist プロパティの再読み込みとクラスタ情報の更新を実行する。詳細は、「クラスタへのブローカの追加」を参照
update bkr [-b hostName:port]
-o attr=val
metrics bkr [-b hostName:port]
[-m metricType]
[-int interval]
デフォルトのブローカ、または指定したホストとポートのブローカに対して、ブローカのメトリックスを表示する
表示するメトリックスのタイプを指定するには、-m オプションを使用する
ポート 7676 の localhost で実行するブローカを対象にしない場合、表 6-4 に示されるサブコマンドを使用するときに、ブローカのホスト名とポート番号を指定する必要があります。
ブローカのクエリ
シングルブローカに関する情報のクエリと表示を行うには、query サブコマンドを使用します。たとえば、次のように指定します。
このサブコマンドでは、次のような情報が出力されます。
- imqcmd query bkr
ブローカの更新
表 6-5 に示すブローカのプロパティを更新するには、update サブコマンドを使用します。ブローカの更新情報は、ブローカのインスタンス設定ファイルに自動的に書き込まれます。
プロパティ
説明
imq.autocreate.queue
imq.autocreate.topic
imq.queue.deliverypolicy
自動作成されたキューのデフォルトの配信ポリシーを指定する。指定できる値は s (シングル)、r (ラウンドロビン)、または f (フェイルオーバー)。デフォルトは s
imq.cluster.url
クラスタ設定ファイルの場所を指定する。詳細は、「クラスタ設定プロパティ」を参照
imq.log.level
imq.log.file.rolloversecs
ログファイルがロールオーバーされるまでの有効期間 (秒単位)。値を 0 に設定した場合、ファイルの有効期間に基づいたロールオーバーは行われない。デフォルトは 604800 (7 日間)
imq.log.file.rolloverbytes
ログファイルがロールオーバーされるまでのファイルの最大サイズを指定する。値を 0 に設定した場合、ファイルのサイズに基づいたロールオーバーは行われない。デフォルトは 0
imq.message.max_size
imq.system.max_count
imq.system.max_size
imq.portmapper.port
たとえば、次のコマンドでは、キューのデフォルト配信ポリシーがシングルからラウンドロビンに変更されます。
- imqcmd update bkr -o "imq.queue.deliverypolicy=r"
コネクションサービスの管理
Command ユーティリティには、次のタスクを実行できるさまざまなサブコマンドが含まれています。MQ のコネクションサービスの概要については、「コネクションサービス」を参照してください。
表 6-6 に、コネクションサービスを制御する imqcmd のサブコマンドを一覧表示します。ホスト名、またはポートを指定しない場合は、localhost、7676 を使用するものと仮定します。
表 6-6    コネクションサービスを管理する imqcmd のサブコマンド
サブコマンドの構文
説明
list svc [-b hostName:port]
metrics svc -n serviceName
[-b hostName:port]
[-m metricType] [-int interval]
デフォルトのブローカ、または指定したホストとポートのブローカで実行している特定のサービスのメトリックスを一覧表示する
表示するメトリックスのタイプを指定するには、-m オプションを使用する
query svc -n serviceName
[-b hostName:port]
pause svc -n serviceName
[-b hostName:port]
デフォルトのブローカ、または指定したホストとポートのブローカで実行している特定のサービスを停止する。admin サービスは停止できない
resume svc -n serviceName
[-b hostName:port]
update svc -n serviceName
[-b hostName:port]
-o attr=val
デフォルトのブローカ、または指定したホストとポートのブローカで実行している特定のサービスの特定の属性を更新する。サービスの属性については、表 6-8 を参照
ブローカは、アプリケーションクライアントと管理クライアントの両方の通信をサポートしています。MQ ブローカで現在使用できるサービスを、表 6-7 に示します。「サービス名」列の値は、-n オプションでサービス名を指定するのに使用する値になります。表が示すように、各サービスは使用するサービスタイプ (NORMAL または ADMIN) と基礎となるトランスポートレイヤによって指定されます。
表 6-7    ブローカでサポートされているコネクションサービス
サービス名
サービスタイプ
プロトコルタイプ
コネクションサービスの一覧表示
ブローカの使用可能なコネクションサービスを一覧表示するには、次のようなコマンドを使用します。
たとえば、次のコマンドでは、ポート 6565 の MyServer ホストで実行しているブローカで使用可能なサービスが一覧表示されます。
- imqcmd list svc [-b hostName:portNumber]
次のコマンドでは、ポート 7676 の localhost で実行しているブローカのすべてのサービスが一覧表示されます。
- imqcmd list svc -b MyServer:6565
このコマンドでは、次のような情報が出力されます。
- imqcmd list svc
サービスのプロパティのクエリと更新
シングルサービスに関する情報のクエリと表示を行うには、query サブコマンドを使用します。たとえば、次のように指定します。
このサブコマンドでは、次のような情報が出力されます。
- imqcmd query svc -n jms
表 6-8 に示す 1 つ以上のサービスの属性値を変更するには、update サブコマンドを使用します。
表 6-8    コネクションサービスの属性
属性
説明
port
minThreads
maxThreads
次のコマンドでは、jms サービスに割り当てられたスレッドの最小数が 20 に変更されます。
- imqcmd update svc -n jms -o "minThreads=20"
サービスの停止および再開
admin サービス (停止できない) 以外のサービスを停止するには、次のようなコマンドを使用します。
サービスを再開するには、次のようなコマンドを使用します。
- imqcmd pause svc -n serviceName
- imqcmd resume svc -n serviceName
送信先の管理
MQ のメッセージはすべて、特定のブローカで作成された送信先、キュー、およびトピックを経由して、コンシューマクライアントにルートされます。管理者は、ブローカのこれらの送信先を管理する必要があります。送信先の管理には、コマンドユーティリティを使用して送信先の作成と破棄、送信先の一覧表示、送信先に関する情報の表示、およびメッセージのパージを行うことが含まれます。送信先の概要については、「物理的な送信先」を参照してください。表 6-9 は、imqcmd の送信先のサブコマンドについてまとめたものです。デフォルトのブローカ (localhost:7676) を使用しない場合、ブローカのホスト名とポート番号を指定する必要があります。
表 6-9    送信先を管理する imqcmd のサブコマンド
サブコマンド
説明
list dst [-tmp]
すべての送信先を一覧表示する。同様に、一時送信先についても一覧表示するオプションがある (「一時送信先」を参照)
create dst -t type
-n name [-o att=val]
[-o att=val1]...]
特定のタイプの送信先を指定した名前と属性で作成する。送信先名には、英数字 (空白文字は含まない) だけを使用する必要がある。送信先名は、英字や 「 _ 」 で開始できる
destroy dst -t type
-n name
purge dst -t type -n name
query dst -t type -n name
update dst -t type -n name
-o att=val[[-o att=val1]...]
属性名は、表 6-10 に示す属性のどれかになる
送信先の作成
送信先を作成する場合、タイプ (トピックまたはキュー) と送信先の属性値 ( 必要に応じて ) を指定する必要があります。これらの属性のデフォルト値は、ブローカの設定ファイル (「設定ファイル」を参照) に設定されます。送信先を破棄すると、その送信先のすべてのメッセージがパージされ、ブローカからその送信先がなくなるため、操作を元に戻すことはできません。
表 6-10 に送信先を作成する際、各タイプの送信先に設定できる属性を示します。
送信先タイプ
属性
デフォルト値
説明
queueDeliveryPolicy
Single
maxTotalMsgBytes
maxNumMsgs
maxBytesPerMsg
maxBytesPerMsg
キューの送信先を作成するには、次のようなコマンドを入力する
トピックの送信先を作成するには、次のようなコマンドを入力する
- imqcmd create dst -n myQueue -t q -o "queueDeliveryPolicy=f"
- 送信先名は、有効な Java 識別子にする必要がある
- imqcmd create dst -n myTopic -t t -o "maxBytesPerMsg=5000"
送信先に関する情報の入手
送信先の現在の属性値に関する情報を入手するには、次のようなコマンドを使用します。
さらに、update imqcmd サブコマンドを使用して、1 つ以上の属性の値を変更することができます。
- imqcmd query dst -t q -n XQueue
ポート 4545 の myHost などのように、特定のブローカの送信先をすべて一覧表示するには、次のようなコマンドを使用します。
list コマンドでは、オプションで一時送信先 (-tmp オプションを使用) を指定することが可能です。一時送信先とは、ほかのクライアンに送信したメッセージに対する応答を受け取るための送信先が必要なクライアントアプリケーションによって作成される送信先のことです (「一時送信先」を参照)。これらの送信先は、アクティブなメッセージコンシューマが存在しない場合に、クライアントアプリケーションが作成するAPI コールによってのみ破棄されます。
- imqcmd list dst -b myHost:4545
送信先の更新
送信先の属性を変更するには、update dst サブコマンドと -o オプションを使用して、更新する属性を指定します。複数の属性を更新する必要がある場合、-o オプションを使用できます。たとえば、次のコマンドでは maxBytesPerMsg 属性が 1000 に、MaxNumMsgs 属性が 2000 にそれぞれ変更されます。
更新が可能な属性については、表 6-10 を参照してください。
- imqcmd update dst -t q -n myQueue -o "maxBytesPerMsg=1000"
-o maxNumMsgs=2000
送信先のタイプやキューのキュー配信ポリシーを更新する場合、update dst サブコマンドは使用できません。
送信先のパージ
送信先のキューに現在入っているメッセージは、すべてパージすることが可能です。送信先をパージすると、物理的な送信先のキューに入っているすべてのメッセージが削除されます。送信先に累積されたメッセージによって、システムのリソースが大幅に消費される場合に、これらのメッセージをパージすることができます。これは、登録済みのコンシューマクライアントがキューに入っていない場合やキューが多数のメッセージを受信する場合に発生する可能性があります。また、トピックの永続サブスクライバが、アクティブにならない場合にも発生する可能性があります。どちらの場合も、メッセージが必要以上に保持されます。送信先のメッセージをパージするには、次のようなコマンドを使用します。
ブローカをシャットダウンした後、再起動するときに、古いメッセージを配信する必要がない場合は、imqbrokerd コマンドの reset サブコマンドを使用して、古いメッセージをパージします。たとえば、次のとおりです。
- imqcmd purge dst -n myQueue -t q
- imqcmd purge dst -n myTopic -t t
これで、ブローカを再起動すると、送信先のパージに関する問題が解消されます。
- imqbrokerd -reset messages
送信先の破棄
送信先を破棄するには、次のようなコマンドを使用します。
- imqcmd destroy dst -t q -n myQueue
永続サブスクリプションの管理
ブローカの永続サブスクリプションを管理するには、imqcmd のサブコマンドを使用する必要があります。永続サブスクリプションとは、クライアントによって、永続的であると登録されたトピックのサブスクリプションのことです。このサブスクリプションには固有の識別情報があり、コンシューマがアクティブになっていないときでも、サブスクリプションのメッセージを保持するブローカが必要となります。通常、ブローカはメッセージの有効期限が切れたときだけ、保持していた永続サブスクライバのメッセージを削除します。表 6-12 は、imqcmd の永続サブスクリプションのサブコマンドについてまとめたものです。デフォルトのブローカ (localhost:7676) を使用しない場合、ブローカのホスト名とポート番号を指定する必要があります。
表 6-11    永続サブスクリプションを管理するimqcmd のサブコマンド
サブコマンド
説明
list dur -d destination
destroy dur -n name
-c client_id
特定のクライアント識別子の特定の永続サブスクリプションを破棄する (「クライアント識別子」を参照)
purge dur -n name
-c client_id
特定のクライアント識別子のメッセージをすべてパージする (「クライアント識別子」を参照)
たとえば、次のコマンドでは、トピック SPQuotes の永続サブスクリプションがすべて一覧表示されます。
トピックの永続サブスクリプションごとに、list サブコマンドは、永続サブスクリプションの名前、ユーザのクライアント ID、このトピックのキューに入っているメッセージの数、および永続サブスクリプションの状態 (アクティブ / 非アクティブ) を返します。次に例を示します。
- imqcmd list dur -d SPQuotes
list コマンドから返される情報を使用して、破棄する必要がある永続サブスクリプションやメッセージをパージする必要がある永続サブスクリプションを識別することができます。サブスクリプションを識別するには、サブスクリプションの名前とクライアント ID を使用します。たとえば、次のように指定します。
- imqcmd destroy dur -n myDurable -c myClientID
トランザクションの管理
クライアントアプリケーションによって開始されたトランザクションはすべてブローカによって記録されます。これらは、XA リソースマネージャによって管理される MQ の単純なトランザクション、または分散トランザクションです (「ローカルトランザクション」を参照)。トランザクションにはすべて、MQ トランザクション ID が付けられています。これは、ブローカのトランザクションを一意に識別する ための64 ビットの数字です。また、分散トランザクションには、分散トランザクションマネージャによって割り当てられる最大 128 バイトの分散トランザクション ID (XID) が付けられます。MQ は、MQ トランザクション ID と XID の関連付けを保持します。分散トランザクションの場合、障害が発生すると、トランザクションがコミットされずに PREPARED 状態のままになる可能性があります。このため、管理者は監視を行い、PREPARED 状態のトランザクションをロールバックするか、またはコミットする必要があります。
表 6-12 は、imqcmd のトランザクションのサブコマンドについてまとめたものです。デフォルトのブローカ (localhost:7676) を使用しない場合、ブローカのホスト名とポート番号を指定する必要があります。
表 6-12    トランザクションを管理する imqcmd のサブコマンド
サブコマンド
説明
list txn
query txn -n transaction_id
commit txn -n transaction_id
rollback txn -n transaction_id
たとえば、次のコマンドでは、ブローカのすべてのトランザクションが一覧表示されます。
トランザクションごとに、list サブコマンドは、トランザクション ID、状態、ユーザ名、メッセージまたは通知の数、および作成時間を返します。次に例を示します。
- imqcmd list txn
このコマンドを使用すると、ブローカ内のローカルと分散の両方のトランザクションがすべて表示されます。PREPARED 状態のトランザクションだけをコミット、またはロールバックすることができます。これを実行するのは、障害の発生でトランザクションが PREPARED 状態になり、分散トランザクションマネージャによってコミットされるプロセスになっていないことがわかっている場合だけです。
たとえば、ブローカの自動ロールバックプロパティを「false」に設定した場合 (表 2-4 を参照)、ブローカの起動時に、PREPARED 状態のトランザクションを手動でコミット、またはロールバックする必要があります。
list サブコマンドは、トランザクションでプロデュースされたメッセージの数とトランザクションで通知されたメッセージの数 (#Msgs/#Acks) も表示します。トランザクションがコミットされるまで、これらのメッセージは配信されず、通知は処理されません。
query サブコマンドを使用すると、 list サブコマンドで表示される情報のほかに、クライアント ID、コネクション識別子、分散トランザクション ID (XID) などの追加情報が表示されます。たとえば、次のように指定します。
このサブコマンドによって、次のような情報が出力されます。
- imqcmd query txn -n 64248349708800
分散トランザクションをコミット、またはロールバックするには、commit サブコマンドと rollback サブコマンドを使用します。前述したように、PREPARED 状態のトランザクションだけをコミット、またはロールバックできます。たとえば、次のように指定します。
ブローカの起動時に、PREPARED 状態のトランザクションが自動的にロールバックされるように、ブローカを設定することも可能です。詳細は、表 2-4 の imq.transaction.autorollback プロパティを参照してください。
- imqcmd commit txn -n 64248349708800
前へ 目次 索引 次へ
Copyright © 2002 Sun Microsystems, Inc. All rights reserved.
最終更新日 2002 年 6 月 19 日