8 JMS統計のモニターとメッセージの管理

Oracle WebLogic Serverで、JMS統計をモニターおよび管理できます。実行中のサーバーおよびそのコンテナ内にデプロイされているアプリケーションによって生成された診断データを作成、収集、分析、アーカイブし、それらの診断データにアクセスできます。

Weblogic JMSでは、高度な実行時統計機能でWebLogicドメイン内のJMSサーバーや宛先リソースをモニターして、問題がないかどうかを確認できます。問題があれば、プロファイリングによって、問題の原因となっているアプリケーションを判断できます。アプリケーションを絞り込んだら、JMSデバッグ機能を使用して、そのアプリケーション内の問題点を突き止めます。

JMS診断通知、デバッグ・オプション、メッセージ・ライフ・サイクルのロギング、およびJMS宛先でのメッセージ処理の制御を構成する方法については、「WebLogic JMSのトラブルシューティング」を参照してください。

このリリースに含まれるメッセージ管理ツールでは、WebLogic Server管理コンソールまたは新しいパブリック・ランタイムAPIを使用することで、すべてのメッセージを表示および参照したり、稼働中のJMSサーバーでほとんどのメッセージを操作したりする機能が強化されています。これらのメッセージ管理機能には、トランザクション管理、恒久サブスクライバの管理、JMSクライアント接続の管理に加えて、メッセージの表示(ソート用)、メッセージの操作(作成、移動、削除など)、メッセージのインポートとエクスポートなどがあります。

この章の内容は次のとおりです。

WebLogic診断サービスの詳細は、『Oracle WebLogic Server診断フレームワークの構成と使用』を参照してください。

JMS統計のモニター

WebLogic JMSを構成すると、アプリケーションでJMS APIを使用してメッセージの送受信ができるようになります。

『Oracle WebLogic Server JMSアプリケーションの開発』「基本的なJMSアプリケーションの開発」を参照してください。

JMSサーバー、接続、キューおよびトピック宛先、JMSサーバーのセッション・プール、プール済み接続、アクティブなセッション、メッセージ・プロデューサ、メッセージ・コンシューマ、JMSトピックの恒久サブスクライバといったJMSリソースに関する統計をモニターできます。

サーバーが実行されていれば、JMS統計は増え続けます。統計は、サーバーを再起動するときにのみリセットされます。

JMSサーバーのモニター

WebLogic Server管理コンソールまたはJMSServerRuntimeMBeanを通じて、ドメインに定義されているアクティブなJMSサーバーに関する統計をモニターできます。JMSサーバーは、JMSサーバーに限定的にターゲット指定されたJMSモジュール内のJMSキュー・リソースおよびJMSトピック・リソースの管理コンテナとして機能します。

WebLogic Server管理コンソールを使用したJMSサーバーのモニターの詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプJMSサーバーのモニターを参照してください。

WebLogic Server管理コンソールでJMSサーバーをモニターする場合は、アクティブな宛先、トランザクション、接続、およびセッション・プールもモニターできます。

クラスタのターゲットとして指定されたJMSサーバーをモニターする

クラスタをターゲットとして指定されたJMSサービス(JMSサーバー、SAFエージェント、パス・サービスなど)と永続ストアには、動的クラスタ内の個々のインスタンスの統計をモニターするために関連付けられたRuntimeMbeansの複数のインスタンスがあります。JMSサーバーと永続ストアの実行時MBeanには、対応するサーバー・インスタンス名に従って、次のパターンを使用した名前が自動的に付けられます。

configured_JMS_service_Artifact_name@server-name

server-nameは構成済のサーバー名に動的サーバー・インスタンス番号を連結したものです。

アクティブなJMS宛先をモニターする

JMSサーバーにターゲット指定されているすべてのアクティブな宛先に関する統計をモニターできます。JMS宛先は、JMSサーバーに限定的にターゲット指定されたJMSモジュール内のキュー宛先またはトピック宛先のタイプを特定します。

『Oracle WebLogic Server Administration Consoleオンラインヘルプ』JMSサーバー: モニタリング: アクティブな宛先に関する項を参照してください。

アクティブなJMSトランザクションをモニターする

JMSサーバーで実行しているすべてのアクティブなトランザクションに関する統計をモニターできます。

アクティブなJMSトランザクション用に提供される実行時統計の詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプJMSサーバー: モニター: アクティブなトランザクションを参照してください。

アクティブなJMS接続、セッション、コンシューマ、プロデューサをモニターする

JMSサーバーへのアクティブなJMS接続に関する統計をモニターできます。JMS接続は、メッセージング・システムへの開かれた通信チャネルです。

アクティブなJMSサーバー接続用に提供される実行時統計の詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプJMSサーバー: モニター: アクティブな接続を参照してください。

JMSサーバーのアクティブな接続のモニター用ページでも、サーバー上のアクティブなJMSセッション、コンシューマ、およびプロデューサの統計をすべてモニターできます。セッションでは、生成および消費されるメッセージの順序が定義されます。また、複数のメッセージ・プロデューサとメッセージ・コンシューマを作成できます。メッセージの生成と消費には同じスレッドを使用できます。

WebLogic Server管理コンソールを使用したセッション、コンシューマ、およびプロデューサのモニターの詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプの次のトピックを参照してください。

アクティブなJMSセッション・プールをモニターする

JMSサーバー用に定義されているすべてのアクティブなJMSセッション・プールに関する統計をモニターできます。セッション・プールを使用すると、アプリケーションでメッセージを並行して処理できます。

アクティブなJMSセッション・プール用に提供される実行時統計の詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプJMSサーバー: モニター: アクティブなセッション・プールを参照してください。

キューのモニター

WebLogic Server管理コンソールまたはJMSDestinationRuntimeMBeanを通じて、JMSモジュール内のキュー・リソースに関する統計をモニターできます。JMSキューでは、JMSサーバーのポイント・ツー・ポイントの宛先タイプが定義されます。キューは、同期ピア通信に使用されます。キューに配信されたメッセージは、1つのコンシューマに配信されます。

WebLogic Server管理コンソールを使用したキュー・リソースのモニターの詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプJMSシステム・モジュールのキューのモニターを参照してください。

WebLogic Server管理コンソールを使用して、キュー上のメッセージを管理することもできます。「JMSメッセージの管理」を参照してください

トピックのモニター

WebLogic Server管理コンソールまたはJMSDestinationRuntimeMBeanを使用して、JMSモジュール内のトピック・リソースに関する統計をモニターできます。JMSトピックでは、JMSサーバーのパブリッシュ/サブスクライブの宛先タイプが定義されます。トピックは、非同期のピア通信に使用されます。トピックに配信されたメッセージは、すべてのトピック・コンシューマに配信されます。

WebLogic Server管理コンソールを使用したトピック・リソースのモニターの詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのJMSシステム・モジュールのトピックのモニターを参照してください。

トピックの恒久サブスクライバのモニター

WebLogic Server管理コンソールまたはJMSDurableSubscriberRuntimeMBeanを使用して、JMSトピックで実行中のすべての恒久サブスクライバに関する統計をモニターできます。恒久サブスクライバでは、トピック・サブスクライバに名前を割り当ててユーザーやアプリケーションと関連付けられます。恒久サブスクライバは、メッセージが配信された際にアクティブではない場合にも、メッセージが配信されるか期限切れになるまで、永続的なファイル・ベースのストアか、JDBCでアクセス可能なデータベースに格納されます。

WebLogic Server管理コンソールを使用して、トピックで実行中の恒久サブスクライバを管理することもできます。「JMSメッセージの管理」を参照してください

共通分散キューのモニター

WebLogic Server管理コンソールまたはJMSDestinationRuntimeMBeanを使用して、JMSモジュール内の共通分散キュー・リソースに関する統計をモニターできます。分散キュー・リソースは、単一の論理宛先としてクライアントからアクセス可能なキューのセットです(分散キューは独自のJNDI名を持ちます)。この単位のメンバーは通常、クラスタ内の複数のサーバーに分散されており、各メンバーは個々のJMSサーバーに属しています。

WebLogic Server管理コンソールを使用した共通分散キュー・リソースのモニターの詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプ共通分散キューの統計のモニターを参照してください。

WebLogic Server管理コンソールを使用して、分散キュー上のメッセージを管理することもできます。「JMSメッセージの管理」を参照してください

共通分散トピックのモニター

WebLogic Server管理コンソールまたはJMSDestinationRuntimeMBeanを使用して、JMSモジュール内の共通分散トピック・リソースに関する統計をモニターできます。分散トピック・リソースは単一のトピックのセットであり、単一の論理宛先としてクライアントにアクセスできます(たとえば、分散トピックには独自のJNDI名があります)。この単位のメンバーは通常、クラスタ内の複数のサーバーに分散されており、各メンバーは個々のJMSサーバーに属しています。

WebLogic Server管理コンソールを使用した共通分散トピック・リソースのモニターの詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプ共通分散キューの統計のモニターを参照してください。

プール済みJMS接続のモニター

サーバー上のすべてのアクティブなプール済みJMS接続に関する統計を表示できます。プール済みJMS接続は、EJBまたはサーブレットのデプロイメント記述子のresource-reference要素を使用してJMS接続ファクトリを定義するEJBとサーブレットによって使用される、セッション・プールです。

『Oracle WebLogic Server Administration Consoleオンラインヘルプ』JMSサーバー: モニタリング: アクティブなプール済接続に関する項を参照してください。

JMSメッセージの管理

WebLogic JMSメッセージのモニター機能と管理機能を使用すると、新しいメッセージの作成、選択したメッセージの削除、別のキューへのメッセージの移動、別のファイルへのメッセージ・コンテンツのエクスポート、別のファイルからのメッセージ・コンテンツのインポート、またはキューからのすべてのメッセージの削除を行うことができます。

Java APIを使用したJMSメッセージの管理

WebLogic Java Management Extensions (JMX)機能を使用すると、JMSDestinationRuntimeMBeanJMSDurableSubscriberRuntimeMBeanにアクセスして、JMSキューやトピックの恒久サブスクライバ上にあるメッセージを管理できます。『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』JMXを使用したWebLogic Server MBeanへのアクセスに関する項を参照してください。

WebLogic JMSには、メッセージの様々な状態があります。後続の項で説明されているように、メッセージを管理するためにこれらの状態を利用できます。有効なメッセージ状態の詳細は、Oracle WebLogic Server Java APIリファレンスweblogic.jms.extensions.JMSMessageInfoに関する項を参照してください。

管理コンソールを使用したJMSメッセージの管理

WebLogic Server管理コンソールの「JMSメッセージの管理」ページには、モニターしているスタンドアロンのキュー、分散キュー、または恒久トピック・サブスクライバで使用できるメッセージの概要が表示されます。ページ内でメッセージを探したり、指定したフィルタ条件を満たすメッセージのセットを検索することができます。メッセージの表示をカスタマイズして、必要な情報のみを表示することもできます。このページでは、コンテンツを表示するメッセージの選択、新しいメッセージの作成、1つまたは複数のメッセージの削除、メッセージの移動、メッセージのインポートとエクスポート、キューや恒久サブスクリプションからの全メッセージの削除を行うことができます。

WebLogic Server管理コンソールを使用してスタンドアロンのキュー、分散キュー、および恒久サブスクライバにあるメッセージを管理する場合の詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプで次の手順を参照してください。

各メッセージ管理機能については、以降の節で詳しく説明します。

メッセージの実行時情報をモニターする

デフォルト設定の「JMSメッセージの管理」ページには、キューまたは恒久サブスクライバ上の各メッセージに関する情報が、以下の列で構成される表形式で表示されます。

  • ID: メッセージの一意の識別子。

  • タイプ: JMSメッセージの種類(BytesMessage、TextMessage、StreamMessage、ObjectMessage、MapMessage、XMLMessageなど)。

  • 相関ID: メッセージのユーザー定義の識別子。通常は件名が同じメッセージの相関に使用されます

  • 優先度: メッセージの重要度または緊急度のレベルを示す順位。0が最低、9が最高です。通常は、0 - 4が通常の優先度、5 - 9は緊急度の高い優先度を示します。優先度はデフォルトで4に設定されています。

  • タイムスタンプ - メッセージがキューに到着した時刻。

表示する列の順序を変更したり、どの列を表示してどの列を非表示にするかを選択したりできます。ページに表示するメッセージの数を、デフォルトの10から20または30に増やすこともできます。

デフォルトでは、宛先に到着した順番でメッセージが表示されます。「ID」列のヘッダーをクリックすると、メッセージIDの昇順または降順でメッセージを表示することを選択できます。ただし、ソート順をいったん変更すると、当初のソート順に戻すことはできません。メッセージを到着順で表示するには、「JMSシステム・モジュール・リソース」ページに戻ってキューを選択しなおします。

メッセージを問い合せる

「JMSメッセージの管理」ページの上部にある「メッセージ・セレクタ」フィールドを使用すると、有効なJMSメッセージ・ヘッダーまたはプロパティ(JMSXDeliveryCountを除く)に基づいてキュー上のメッセージをフィルタ処理できます。メッセージ・セレクタはブール式です。これは、SQLのSELECT文のwhere句と類似した構文を含む文字列から構成されます。

以下に、セレクタ式の例を示します。

salary > 64000 and dept in ('eng','qa')
(product like 'WebLogic%' or product like '%T3') 
       and version > 3.0
hireyear between 1990 and 1992 
       or fireyear is not null
fireyear - hireyear > 4

メッセージ・セレクタ構文の詳細は、javax.jms.MessageのJavadoc(http://docs.oracle.com/javaee/6/api/javax/jms/Message.htmlで入手可能)を参照してください。

メッセージを移動する

以下の条件を満たせば、ソース宛先からターゲット宛先にメッセージを転送できます。

  • ソース宛先が、消費の休止状態にあるキューまたはトピック恒久サブスクライバです。

    ノート:

    消費の休止状態の詳細は、「消費の休止と消費の再開」を参照してください

  • メッセージの状態が、「表示」、「遅延」、または「順序付け」です。

  • ターゲット宛先が:

    • ソース宛先と同じクラスタにあります

    • キュー、トピック、またはトピック恒久サブスクライバです

    • 生成の休止状態にありません

      ノート:

      生成の休止状態の詳細は、「生成の休止と生成の再開」を参照してください

メッセージを移動しても、メッセージの識別子は変更されません。移動したメッセージがすでにターゲット宛先に存在する場合は、同じ識別子の重複メッセージが宛先に追加されます。

メッセージを削除する

以下の条件を満たす場合に、キューまたはトピックの恒久サブスクライバから特定のメッセージを削除したり、すべてのメッセージを削除することができます。

  • 宛先が消費の休止状態にあります。

    ノート:

    消費の休止状態の詳細は、「消費の休止と消費の再開」を参照してください

  • メッセージの状態が、「表示」、「遅延」、または「順序付け」です。

削除処理の間は、宛先がロックされます。削除処理中に障害が発生すると、選択したメッセージの一部しか削除されない可能性があります。

新しいメッセージを作成する

宛先に送信する新しいメッセージを作成できます。新しいメッセージを作成するには、以下の情報を指定します。

  • メッセージの種類: BytesMessage、TextMessage、StreamMessage、ObjectMessage、MapMessage、XMLMessageなど。

  • 相関ID: メッセージのユーザー定義の識別子。通常は件名が同じメッセージの相関に使用されます。

  • 有効期限: メッセージの有効期限(存続時間値)を指定します。

  • 優先度: メッセージの重要度または緊急度のレベルを示す順位。0が最低、9が最高です。通常は、0 - 4が通常の優先度、5 - 9は緊急度の高い優先度を示します。優先度はデフォルトで4に設定されています。

  • 配信モード: PERSISTENTまたはNON_PERSISTENTメッセージングを指定します。

  • 配信時間: メッセージをコンシューマに配信できる最も早い絶対時間を定義します。

  • 再配信の制限: メッセージがエラー宛先に移動するまでに試行できる再配信の回数。

  • ヘッダー: 各JMSメッセージには、ヘッダー・フィールドの標準セットが含まれています。これはデフォルトで含まれ、メッセージ・コンシューマで利用できます。一部のフィールドは、メッセージ・プロデューサで設定できます。

  • 本文: メッセージのコンテンツです。

JMSメッセージのプロパティの詳細は、Oracle WebLogic Server JMSアプリケーションの開発WebLogic JMSの理解を参照してください。

メッセージをインポートする

XMLフォーマットのメッセージをインポートすると、指定した宛先にメッセージが作成されるか、既存のメッセージが置換されます。インポートするメッセージのターゲット宛先として指定できるのは、キューまたはトピック恒久サブスクライバです。宛先は、生成の休止状態である必要があります。

ノート:

生成の休止状態の詳細は、「生成の休止と生成の再開」を参照してください

インポートしたファイルによって置換されたメッセージがJMSトランザクションに関連付けられていた場合は、インポートしたメッセージも引続きそのトランザクションに関連付けられます。

新しいメッセージを作成する場合や、インポートしたファイルによって既存のメッセージが置換される場合は、以下の規則が適用されます。

  • 割当て制限は、新しいメッセージと置換したメッセージの両方に適用されます。

  • インポートしたメッセージの配信回数はゼロに設定されます。

  • 新しいメッセージIDは、インポートしたメッセージごとに生成されます。

  • インポートしたメッセージの配信モードがPERSISTENTに設定されており、ターゲット宛先にストアが存在しない場合は、配信モードがNON-PERSISTENTに変更されます。

    ノート:

    JMSメッセージのインポートは、結果だけを見ると新しいJMSメッセージの作成やパブリッシュに似ていますが、ExpirationTimeが定義されている(ゼロでない)メッセージのインポート時の動作が異なります。これは、メッセージ管理APIのExpirationTimeがインポートされたメッセージ専用であるためです。一方、メッセージ送信APIのExpirationTimeは送信されたメッセージの時間に関連するものです。

メッセージをエクスポートする

メッセージをエクスポートすると、JMSメッセージがXMLフォーマットまたはシリアライズされたフォーマットに変換されます。ソース宛先は、生成の休止状態である必要があります。

ノート:

生成の休止状態の詳細は、「生成の休止と生成の再開」を参照してください

一時的な宛先を使用することで、サーバー定義の宛先の構成と作成に伴うシステム管理のオーバーヘッドを発生させずに、必要に応じてアプリケーションで宛先を作成できます。

ノート:

通常、JMSアプリケーションでは、JMSReplyToヘッダー・フィールドを使用してリクエストにレスポンスを戻すことができます。しかし、JMSReplyToフィールドの情報は使用可能な宛先オブジェクトではなく、エクスポートまたはインポートの後は有効ではありません。

トランザクションの管理

グローバル・トランザクションの一部として生成または消費されるメッセージは、基本的にトランザクションによってロックされ、トランザクション・コーディネータがJMSブランチをコミットするか中止するまでロックされたままになります。障害が原因でコーディネータがトランザクションの結果をJMSサーバーに通信できない場合、トランザクションに関連付けられたメッセージは長時間保留されたままになります。

WebLogic Server管理コンソールから利用できるJMSサーバーのトランザクション管理機能を使用すると、次のことが行えます。

  • JMSサーバーが参加する進行中のトランザクションを特定します。

  • JMSトランザクション・ブランチに関連付けられたメッセージを特定します。

  • 保留中のJMSトランザクション・ブランチをコミットするかロールバックすることでその結果を強制します。

  • JMSクライアント接続を管理します。

特定のWebLogic ServerインスタンスのすべてのJMS接続を表示して、接続を保持する各プロセスのアドレスとポートの情報を取得できます。接続を終了させることもできます。WebLogic Server管理コンソールを使用したJMSサーバーのトランザクション管理の詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプJMSサーバー: モニター: アクティブなトランザクションを参照してください。

JMSのトランザクションの詳細は、Oracle WebLogic Server JMSアプリケーションの開発WebLogic JMSでのトランザクションの使用方法を参照してください。

恒久トピック・サブスクライバの管理

特定のトピックの恒久サブスクライバを一覧表示したり、サブスクライバに関連付けられたメッセージを参照することができます。また、サブスクライバの作成や削除、選択したメッセージの削除、サブスクリプションの全メッセージの削除を行うことができます。

『Oracle WebLogic Server Administration Consoleオンラインヘルプ』トピック恒久サブスクライバの管理に関する項を参照してください。