20 Oracle Mediatorのサービス・コンポーネントとエンジンの構成

この章では、Oracle Enterprise Manager Fusion Middleware Controlを使用してOracle Mediatorサービス・コンポーネントとサービス・エンジンのランタイム・プロパティを構成する方法について説明します。また、メディエータの拡張プロパティおよびカスタム・プロパティも構成できます。

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

Oracle Mediatorのチューニングとパフォーマンス・プロパティの詳細は、パフォーマンスのチューニングを参照してください。

Oracle Mediatorサービス・エンジン・プロパティの構成

メディエータ・サービス・エンジン・プロパティは、メディエータ・サービス・コンポーネントの処理時にメディエータ・サービス・エンジンによって使用されます。

メディエータ・サービス・エンジン・プロパティを構成するには:

  1. メディエータ・サービス・エンジン・プロパティ」ページに、次のいずれかの方法を使用してアクセスします。

    SOAインフラストラクチャのメニューから... ナビゲータのSOAフォルダから...
    1. 「SOA管理」「メディエータ・プロパティ」の順に選択します。

    1. 「soa-infra」を右クリックします。

    2. 「SOA管理」「メディエータ・プロパティ」の順に選択します。

    次の図に示されているように、「メディエータ・サービス・エンジン・プロパティ」ページにメディエータ・プロパティのリストが表示されます。

  2. 使用環境に適するようにサービス・エンジン・プロパティを変更します。

    プロパティについて次の表20-1で説明します。

    表20-1 メディエータ・サービス・エンジンのプロパティ

    プロパティ 説明

    監査レベル

    メディエータ固有の監査レベル。グローバルなSOAインフラストラクチャの監査レベル・プロパティは、このプロパティの値によってオーバーライドされます。このプロパティの可能な値は、次のとおりです。

    • オフ: メディエータの監査をオフにします。ビジネス・フロー・インスタンス・トラッキングとペイロード・トラッキングの情報は収集されません。

    • 継承: 監査のレベルは、SOAインフラストラクチャと同じになります。この設定を使用すると、グローバル設定が変更されたときに、メディエータ監査レベルも自動的に変更できます。このページで別の監査レベル・トラッキングを設定すると、SOAインフラストラクチャ・レベルで設定したトラッキングがオーバーライドされます。

    • Production: すべてのイベントが記録されます。すべての監査詳細が、assignアクティビティの詳細を除いて記録されます。インスタンス・トラッキング情報は収集されますが、ペイロード詳細はキャプチャされないため、これらの詳細はフローの監査証跡で使用できません。このレベルは、通常の操作とテストに最適です。

    • Development: すべてのイベントとすべての監査詳細が記録されます。さらに、ペイロード詳細がキャプチャされるため、フローの監査証跡で使用できます。このレベルは、デバッグする際に便利ですが、パフォーマンスに影響を与える可能性があります。

    このフラグのデフォルト値は、Inheritです。

    ノート:

    • これらのプロパティの変更後に、サーバーを再起動する必要はありません。

    • 監査レベルは、Oracle Application Server 10g リリースではインスタンス・トラッキング・レベルと呼ばれていました。

    メトリック・レベル

    ダイナミック・モニタリング・サービス(DMS)のメトリック・レベルを構成するための、メディエータ固有のプロパティ。DMSメトリックはアプリケーション・コンポーネントのパフォーマンスを計測するために使用されます。このプロパティの可能な値は、次のとおりです。

    • Enabled: DMSメトリック・トラッキングを有効にします。

    • Disabled: DMSメトリック・トラッキングを無効にします。

    パラレルが取得する最大行数

    パラレル処理で繰返しごとに取得する行数。

    ノート: このプロパティの値が大きいと、メモリー不足になる可能性があります。

    パラレル・ロッカー・スレッド・スリープ(秒)

    パラレル処理に関するメッセージがない場合の、行を取得するための連続した2つの繰返し間でのアイドル時間。時間の単位は秒です。

    パラメータ

    カスタム構成プロパティ。例として、「リシーケンスされたメッセージの構成」を参照してください。

    コンテナIDリフレッシュ時間

    コンテナIDリース・タイムアウト

    ハートビート・インフラストラクチャ・プロパティ。メディエータ・サービス・エンジンの一部であるハートビート・インフラストラクチャは、ノードの失敗または停止が原因でメディエータ・サービス・エンジン・インスタンスが存在しないことを検出します。ハートビート・インフラストラクチャは、メディエータ・サービス・エンジンの各インスタンスに対して一意の識別子を作成し、メディエータ・サービス・エンジンが失敗した場合に、必要なハウスキーピング・タスクを実行します。ハートビート・インフラストラクチャは、ハートビート・スレッドで構成されています。このハートビート・スレッドは、各メディエータ・サービス・エンジンの一意の識別子に関連付けられているタイムスタンプを定期的に更新します。メディエータ・サービス・エンジンは、関連付けられているタイムスタンプを更新することで、その存在を他のメディエータ・サービス・エンジンに知らせます。ハートビート・スレッドは、特定の期間に更新されなかった一意の識別子が存在するかどうかも確認します。ハートビート・フレームワークは、次のパラメータを設定することで構成できます。

    • コンテナIDリフレッシュ時間: 各メディエータ・サービス・エンジンの一意の識別子に関連付けられているタイムスタンプを、ハートビート・スレッドが定期的に更新する時間間隔。

      ノート: デフォルト値は60秒です。計画外停止が発生した場合は、サーバーの再起動後に、このプロパティで指定された時間だけ待機する必要があります。

      より頻繁にリフレッシュする必要がある場合は、より小さな値(30秒など)にこのパラメータを設定できます。

    • コンテナIDリース・タイムアウト(秒): 特定の期間に更新されていない一意の識別子が存在するかどうかを、ハートビート・スレッドが定期的に確認する時間間隔。ここで指定された時間より長い期間ノードがリフレッシュしない場合、ノードはタイムアウトしたとみなされます。

      ノート: デフォルト値は300秒です。SQL文の実行が低速であるなどの理由からノードがタイムアウトしている場合は、より大きな値(600秒など)にこのパラメータを設定できます。

    これらのパラメータを構成することで、メディエータ・サービス・エンジンの失敗を検出するためにハートビート・スレッドが使用する期間を指定できます。

    リシーケンサ・ロッカー・スレッド・スリープ(秒)

    ロッカー・スレッドのスリープ間隔(秒単位)。処理できるメッセージを持つグループをリシーケンサが見つけられないときに、ロッカー・スレッドは指定した期間スリープ状態になります。処理可能なメッセージを持つグループが見つかった場合は、データベース・シークの各繰返しの間でロッカー・スレッドがスリープ状態になることはありません。デフォルト値は10です。

    リシーケンサがロックする最大グループ数

    データベース・シークの各繰返しで処理用に取得するグループの数。取得されたグループは、処理用のワーカー・スレッドに割り当てられます。デフォルト値は4です。

    リシーケンサ・ワーカー・スレッド

    リシーケンス・グループを並行処理するためのワーカー・スレッド(ディスパッチャ)の数。各ワーカー・スレッドにグループが割り当てられて、そのグループのメッセージが順番に処理されます。多数のグループがメッセージの処理を待機している場合は、このパラメータを増加することでパフォーマンスを改善できます。デフォルト値は4です。

  3. システムMBeanブラウザで詳細なメディエータ・プロパティを構成するには、「詳細メディエータ構成プロパティ」をクリックしてください。

次に説明するように、システムMBeanブラウザのメディエータ・プロパティには、ナビゲータからもアクセスできます。

JDeveloperでメディエータをユニット・テストするには:

メディエータ・コンポーネントのための単純なUIドリブン・テスト・フレームワークが、HL7形式のサンプル入力をとって、ダウンストリームで生成されるHL7ペイロードを表示します。

テスト・フレームワークでは、様々な中間段階の入力/出力ペイロードも表示されます。ルーティング・ルールで宛先を構成してある場合は、事前構成された様々な宛先に送信されるHL7ペイロードもフレームワークに示されます。このテスト・フレームワークは、JDeveloperで動作します。

  1. JDeveloperで、SOAプロジェクトを作成します。
  2. コンポジット・ファイルで、外部サービスと参照を定義します。
  3. 設計および定義フローにメディエータ・サブコンポーネントを追加します。
    1. Javaプロセスへのコールアウト。
    2. 参照へのルーティングにXPath式を定義します。
    3. ルーティング前にXSLTを使用します。1つか複数またはすべてのルートに適用されます。
  4. ナビゲーション・ペインでMediatorファイルを右クリックし、「テスト」を選択します。
    サンプルHL7ペイロードを指定できるウィンドウがポップアップ表示されます。
  5. 「実行」をクリックしてテストを実行し、テスト結果を新しいタブ付きウィンドウで公開します。
    結果には、設計したメディエータのサブコンポーネントすべてにおける入力と、そのコンポーネントからの各ステップにおける出力が表示されます。参照へのコールがある場合、テストには<入力データ>による参照へのコールなどの適切なメッセージのみが表示されます。

システムMBeanブラウザのプロパティにアクセスするには:

  1. 「SOAインフラストラクチャ」メニューから、「管理」「システムMBeanブラウザ」の順に移動します。

    システムMBeanブラウザ・ページが表示されます。

  2. 左側の「システムMBeanブラウザ」ナビゲーション・ペインで、「oracle.as.soainfra.config」「サーバー: server_name「MediatorConfig」「mediator」の順に選択します。

    MBeanのプロパティが右側のペインに表示されます。

  3. プロパティの値を変更するには、その「値」フィールドを変更して「適用」をクリックします。

    ノート:

    すべての値を変更できるわけではありません。システムMBeanプロパティは一般的に表20-1にリストされているプロパティに対応しますが、MBeanには追加の読取り専用プロパティがあります。追加プロパティのContainerInitRetries表20-1にリストされていません。このプロパティは、Oracle Mediatorサービス・エンジン・インスタンスIDを作成するために行われる試行の数を示します。

リシーケンスされたメッセージの構成

メディエータ・サービス・コンポーネントでメッセージをリシーケンスするには、次の項目を構成する必要があります。

  • ワーカー・スレッド数

  • スレッドでロックできる最大グループ数

  • スリープ間隔

メディエータ・サービス・コンポーネントがベスト・エフォート・リシーケンスを使用するように構成されており、各バッチで処理されるメッセージが最大行数ではなく時間ウィンドウに基づいている場合は、バッファ・ウィンドウも構成できます。

リシーケンスされたメッセージを構成するには:

  1. 「Oracle Mediatorサービス・エンジン・プロパティの構成」で説明されている、いずれかの方法を使用して、「メディエータ・サービス・エンジン・プロパティ」ページまたはシステムMBeanブラウザにアクセスします。
  2. 次のメディエータ・プロパティに値を入力します。
    • リシーケンサ・ワーカー・スレッド: リシーケンサによって使用されるスレッドの数。

    • リシーケンサがロックする最大グループ数: ロック・サイクルごとに取得される最大グループ行数。

    • リシーケンサ・ロッカー・スレッド・スリープ: データベースにメッセージがない場合にリシーケンサ・ロッカーがスリープする時間の長さ(秒)。

    ノート:

    これらのプロパティの詳細は、表20-1を参照してください。

  3. ベスト・エフォート・リシーケンスでの時間ウィンドウのバッファ・ウィンドウを構成するには、「パラメータ」プロパティ値に次のように入力します。
    buffer.window=x
    

    xは、バッファに追加する構成済時間ウィンドウの割合です。たとえば、buffer.window=20は、時間ウィンドウの長さの20%をバッファとして追加することを意味します。

  4. 「適用」をクリックします。