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

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

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

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

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

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

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

JMS統計のモニター

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

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

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

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

JMSサーバーのモニター

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

リモート・コンソールを使用してJMSサーバーをモニターするには、「モニタリング・ツリー」で、「サービス」「メッセージング」「JMSサーバー」の順に移動します。統計を表示するJMSサーバーを選択します。

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

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

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

configured_JMS_service_Artifact_name@server-name

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

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

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

リモート・コンソールで、「モニタリング・ツリー」: 「サービス」: 「メッセージング」: 「JMSサーバー」に移動します。アクティブな宛先を表示するJMSサーバーを選択します。

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

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

リモート・コンソールで、「モニタリング・ツリー」: 「サービス」: 「メッセージング」: 「JMSサーバー」に移動します。アクティブなトランザクションを表示するJMSサーバーを選択します。

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

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

リモート・コンソールで、「モニタリング・ツリー」: 「サービス」: 「メッセージング」: 「JMSサーバー」に移動します。アクティブなJMSサーバー接続を表示するJMSサーバーを選択します。

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

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

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

リモート・コンソールの「モニタリング・ツリー」で、「サービス」: 「メッセージング」: 「JMSサーバー」: myJMSServerに移動します。「セッション・プール・ランタイム」を選択して、アクティブなJMSセッション・プールに指定されたランタイム統計をモニターします。

キューのモニター

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

リモート・コンソールの「モニタリング・ツリー」で、「サービス」: 「メッセージング」: 「JMSサーバー」: myJMSServerに移動します。キュー・リソースをモニターするには、「宛先」: myDestinationResourceを選択します。

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

トピックのモニター

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

リモート・コンソールの「モニタリング・ツリー」で、「サービス」: 「メッセージング」: 「JMSサーバー」: myJMSServerに移動します。トピック・リソースをモニターするには、「宛先」: myDestinationResourceを選択します。

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

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

トピックで実行中の恒久サブスクライバは、「JMSメッセージの管理」の説明に従って管理できます。

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

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

リモート・コンソールの「モニタリング・ツリー」で、「サービス」: 「メッセージング」: 「JMSサーバー」: myJMSServerに移動します。「宛先」: myDestinationResourceを選択して、共通分散キュー・リソースをモニターします。

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

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

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

リモート・コンソールの「モニタリング・ツリー」で、「サービス」: 「メッセージング」: 「JMSサーバー」: myJMSServerに移動します。「宛先」: myDestinationResourceを選択して、共通分散トピック・リソースをモニターします。

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

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

JMSメッセージの管理

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

Jakarta 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に関する項を参照してください。

WebLogicリモート・コンソールを使用したJMSメッセージの管理

WebLogicリモート・コンソールを使用して、モニターしているスタンドアロンのキュー、分散キューまたは恒久トピック・サブスクライバで使用できるJMSメッセージを管理できます。すべてのメッセージを確認したり、フィルタ条件を指定して特定のメッセージのセットを取得できます。メッセージ表をカスタマイズして、必要な情報のみを表示することもできます。

メッセージを選択して、その内容の表示、メッセージの移動、メッセージのインポートとエクスポート、および1つ以上のメッセージの削除を行うことができます。

WebLogicリモート・コンソールを使用してスタンドアロンのキュー、分散キューおよび恒久サブスクライバでメッセージを管理する方法の詳細は、Oracle WebLogic Remote Consoleオンライン・ヘルプJMSメッセージの管理に関する項を参照してください。

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

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

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

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

  • JMSTimestamp: メッセージがキューに到着した時刻。WebLogic JMSは、アプリケーションからメッセージが送信されたときではなく、配信メッセージを受け取ったときに、メッセージのタイムスタンプを書き込みます。

  • State: メッセージの現在の状態。DELAYED、EXPIRED、ORDERED、PAUSED、RECEIVE、REDELIVERY_COUNT_EXCEEDED、SEND、TRANSACTION、またはVISIBLEのいずれかです。

  • JMSDeliveryMode: 配信モードは永続または非永続のいずれかです。

  • MessageSize: メッセージのサイズ(バイト数)。

表示する列を選択できます。

デフォルトでは、宛先に到着した順番でメッセージが表示されます。JMSMessageIDでメッセージを昇順または降順にソートできます。デフォルトのソート順序を再ロードするには(メッセージの到着順)、「表示」タブをクリックし、「メッセージ」に再度戻ります。

メッセージを問い合せる

「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

メッセージ・セレクタ構文の詳細は、https://javadoc.io/doc/jakarta.platform/jakarta.jakartaee-api/latest/jakarta/jms/Message.htmlにあるjakarta.jms.Message Javadocを参照してください。

メッセージを移動する

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

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

    ノート:

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

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

  • ターゲット宛先が:

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

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

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

      ノート:

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

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

メッセージを削除する

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

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

    ノート:

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

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

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

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

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

  • メッセージの種類: 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リモート・コンソールから利用できるJMSサーバーのトランザクション管理機能を使用すると、次のことができます:

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

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

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

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

特定のWebLogic ServerインスタンスのすべてのJMS接続を表示して、接続を保持する各プロセスのアドレスとポートの情報を取得できます。接続を終了させることもできます。リモート・コンソールで、「モニタリング・ツリー」: 「サービス」: 「メッセージング」: 「JMSサーバー」に移動します。トランザクションを管理するJMSサーバーを選択します。

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

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

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