Cache スコープ

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

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

  • 非コンシューマブルで大容量のペイロードに関連する情報を求める要求の処理

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

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

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

キャッシュプロセス

Cache スコープは、非コンシューマブルなペイロードのみをキャッシュします。ストリーミングペイロードなどのコンシューマブルなペイロード (失われる前に 1 回のみ読み込むことができるペイロード) はキャッシュしません。

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

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

  2. Cache スコープは、メッセージペイロードがコンシューマブルかどうかを判断します。

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

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

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

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

      また、結果の応答をオブジェクトストアに保存します (非コンシューマブルな応答の場合)。

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

      生成された応答にコンシューマブルなペイロードがない場合、応答をキャッシュしません。

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

キャッシュ戦略

キャッシュ戦略は、メッセージがサブフローに入ってきたときに Cache スコープが実行するアクションを定義します。デフォルトでは、Cache スコープは、ObjectStore ではなく InMemoryObjectStore にデータを保存するキャッシュ戦略を使用します。テストなどの本番以外の目的でのみデフォルトを使用することをお勧めします。本番環境では、ObjectStore を使用するキャッシュ戦略をセットアップする必要があります。

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

  • 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 にログインし、プロジェクトの名前を検索します。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub