Cache スコープ

Cache スコープは、頻繁にコールされるデータを保存および再利用するために使用されます。Cache スコープを使用して、Mule インスタンスの処理負荷を減らし、フロー内のメッセージ処理速度を上げることができます。次のタスクでは、特に効果的です。

  • 同じ情報を繰り返し求める要求の処理。

  • 大容量の反復可能なストリームに関連する情報を求める要求の処理。

Mule アプリケーションのメッセージプロセッサーが Cache スコープにメッセージを送信すると、親フローは出力を要求します。Cache スコープは、メッセージペイロードを処理して、出力を親フローに配信し、出力を保存 (応答をキャッシュ) します。Cache スコープは、次に同じ種類のメッセージペイロードを受信したときに、時間がかかる可能性のあるプロセスを再度呼び出す代わりにキャッシュされた応答を提供できます。

たとえば、Cache スコープを使用して、フライト情報を求める顧客の要求を管理できます。多くの顧客がサンフランシスコからブエノスアイレスへのフライトに関する同じ価格設定情報を要求する場合があります。多くの処理能力を使用して顧客のクエリごとに個別の要求を複数の航空データベースに送信する代わりに、Cache スコープを使用してデータベースへの要求の送信回数が少なくなるように調整し (10 分に 1 回など)、キャッシュされたフライト価格設定情報をユーザーに提供できます。データの適時性が重要でない場合、Cache スコープで時間と処理能力を節約できます。

任意の数のメッセージプロセッサー (コネクタやコンポーネントなど) を Cache スコープに配置し、スコープ内で発生した処理で生成される応答 (応答メッセージのペイロードが含まれる) を保存するようにキャッシュ戦略を設定できます。

キャッシュ戦略で設定されているオブジェクトストアはクラスター内のすべてのノードで共有されるため、Cache スコープはクラスター化された環境でも機能します。

キャッシュプロセス

Cache スコープは反復可能なストリームをキャッシュします。失われる前に 1 回だけ読み取ることができる反復不可能なストリームはキャッシュしません。コンポーネントのストリーム戦略が反復不可能に設定されていない限り、デフォルトではすべてのストリームが Mule で反復可能です。

一般的なキャッシュプロセスシーケンスは、次のとおりです。

  1. メッセージが Cache スコープに入ります。

  2. Cache スコープは、メッセージペイロードが反復可能かどうかを判断します。

  3. Cache スコープは、メッセージのペイロードを識別するキーを生成します。

    デフォルトでは、Mule は SHA256KeyGenerator および SHA256 ダイジェストを使用して、メッセージペイロードの一意のキーを生成します。ただし、カスタムキャッシュ戦略で独自のキーをセットアップできます。

  4. Cache スコープは、新しく生成されたキーと、以前に処理されてキャッシュされた応答を比較し、セットアップした ObjectStore (推奨) またはデフォルトの ​InMemoryObjectStore​ に保存します。

    • キャッシュされた応答イベントがない場合 (​キャッシュミス​)、Cache スコープは新しいメッセージを処理し、応答を生成します。

      また、結果の応答をオブジェクトストアに保存します (反復可能な応答の場合)。

    • キャッシュされた応答イベントがある場合 (​キャッシュヒット​)、キャッシュ戦略は、新しい要求とキャッシュされた応答の両方のデータを結合する応答を生成します。

      生成された応答が反復不可能なストリームである場合は、応答をキャッシュしません。

  5. Cache スコープは、処理を続行するために応答を親フローにプッシュします。

キャッシュ戦略

キャッシュ戦略は、メッセージがサブフローに入ってきたときに Cache スコープが実行するアクションを定義します。デフォルトでは、Cache スコープは、メモリ内のオブジェクトストアにデータを保存するキャッシュ戦略を使用します。既存のオブジェクトストアを参照するカスタムキャッシュ戦略を作成するか、またはこのキャッシュ戦略で使用する新しいカスタムオブジェクトストアを作成することができます。

キャッシュ戦略から定義または参照されるオブジェクトストアでこれらの値を設定することで、キャッシュサイズ、有効期限、許容される最大エントリ数を設定できます。キャッシュへのアクセスを同期するようにキャッシュ戦略を設定して、異なるメッセージプロセッサーが同時にキャッシュを使用できないようにすることもできます。

キャッシュ戦略は、次のカスタマイズも参照できます。

  • ObjectStore のイベントキー (ペイロードを ObjectStore に保存するためのキーの作成に使用される DataWeave 式または Java オブジェクト)。

  • 戦略の応答ジェネレーター (キャッシュ戦略から返される応答の作成に使用される Java オブジェクトへの参照)。

  • 変更可能または変更不可能なデータのイベントコピー戦略。

絞り込み

Cache スコープは、受信するすべてのメッセージペイロードを処理する代わりに、DataWeave 式に基づいて Cache スコープフローから特定のペイロードを除外できます。

Anypoint Studio では、Anypoint Exchange からサンプルプロジェクト ​Cache Scope with Salesforce Contacts​ (Cache スコープと Salesforce 取引先責任者) をダウンロードして開き、Cache スコープの使用方法について学習できます。このサンプルでは、Salesforce からフェッチされたデータをキャッシュします。クエリが発行されてデータが再度要求されると、キャッシュから結果が返され、Salesforce への新しいコールは実行されません。

Anypoint Studio でこのサンプルプロジェクトをダウンロードして開くには、左上隅にある [Exchange] アイコンをクリックします。次に、開いたウィンドウで、Anypoint Exchange にログインし、プロジェクトの名前を検索します。