Object Store v2 の使用

Anypoint Object Store v2 (Object Store v2) を使用すると、1 つのアプリケーション内で、あらゆる Mule Runtime ワーカーにわたってデータと状態を共有できます。

Object Store v2 は Mule 4 および Anypoint Platform EU コントロールプレーンではデフォルトで有効です。 Mule 3 では、​[Anypoint Platform] > [Runtime Manager]​ から、Object Store v2 にアクセスするアプリケーションで Object Store v2 を有効にします。

コンポーネント

Object Store v2 は、次のコンポーネントとやりとりします。

  • オブジェクトストア用 Anypoint Connector (Object Store Connector)

    Object Store Connector を Anypoint Studio で使用して、オブジェクトストアを読み書きするためのフローを作成します。

    Object Store Connector は Object Store バージョン 1 と 2 の両方で動作します。

    Object Store v2 を Mule 4 アプリケーションで使用する場合は、​[Object store (オブジェクトストア)]​ メニューから適切なオブジェクトストアの設定参照を選択してください。

  • REST API

    Object Store v2 API を使用すると、オブジェクトの作成と削除、オブジェクトの TTL (存続期間) の設定、使用制限の設定ができます。

    Object Store v2 Stats API を使用すると、組織が Object Store に対して行う 1 か月あたりの API コール数など、Object Store v2 の使用量統計を取得できます。

  • Anypoint Runtime Manager

    Object Store v2 を有効にすると、​[Runtime Manager] > [Application Data (アプリケーションデータ)]​ オプションが ​[Object Store]​ に変更されます。 [Object Store]​ ページから、オブジェクトストアのオブジェクトとその値を管理できます。

オブジェクトストアデータの保護

Object Store v2 では、セキュアなトランスポートに TLS を使用します。 保管時のデータは、FIPS 140-2 準拠の暗号化標準を使用して保存されます。 より高いレベルのセキュリティが必要な場合、機密データは暗号化してからオブジェクトストアに書き出します。

Object Store v2 へのアクセスの同期

マルチワーカー CloudHub アプリケーションで Object Store v2 を使用すると、データの不一致やキーの競合が発生する可能性があります。

これらの問題を回避するには、分散されたキー - 値ストアをロックとして使用し、Object Store v2 へのアクセスを同期します。 Mule Runtime Engine での分散ロッキングについては、​「分散ロッキング」​を参照してください。

Object Store Connector を Mule 4 プロジェクトに追加する

Object Store Connector をインストールして Mule プロジェクトに追加します。

  1. Studio で Mule プロジェクトを作成します。

  2. [Mule Palette (Mule パレット)]​ ビューで、​[(X) Search in Exchange ((X) Exchange 内を検索)]​ をクリックします。

  3. [Add Dependencies to Project (連動関係をプロジェクトに追加)]​ で、検索項目に「​Object Store​」と入力します。

  4. [Available modules (使用可能なモジュール)]​ で ​[ObjectStore Connector - Mule 4]​ をクリックし、​[Add (追加)]​ をクリックします。

  5. [Finish (完了)]​ をクリックします。

アプリケーションで Object Store Connector を使用する

  1. Studio で、次のような簡単なフローを作成します。

    Studio の Listener 操作と Store 操作
    Figure 1. このスクリーンショットは、​os-Simple-Flow​ フローの (​1​) ​Listener​ 操作と (​2​) ​Store​ 操作を示します。

    Connector (コネクタ)

    パラメーター

    HTTP Listener (HTTP リスナー)

    Connector configuration (コネクタ設定)​ = ​HTTP_Listener_config

    Path (パス)​ = ​/store

    オブジェクトストア

    Key (キー)​ = ​#[payload.key]

    Value (値)​ = ​[payload.value]

    Object Store v2 では、キーでのパイプ (​|​) 文字の使用はサポートされていません。

    Object Store v2 を使用するには、​[Global Elements (グローバル要素)]​ ページのオブジェクトストアの設定参照で ​[Persistent (永続的)]​ オプションが選択されていることを確認します。 XML に ​persistent="false"​ が含まれる場合、アプリケーションでは Object Store v2 は使用されません。
  2. アプリケーションを保存します。

  3. Package Explorer​ でアプリケーション名を右クリックし、​[Anypoint Platform] > [Deploy to CloudHub (CloudHub にデプロイ)]​ を選択します。

  4. Anypoint Platform にサインインするように促されたら、サインインします。

  5. [Deploy Application (アプリケーションをデプロイ)]​ をクリックし、​[Open in Browser (ブラウザーで開く)]​ をクリックします。

  6. Runtime Manager で、アプリケーションの ​[Status (状況)]​ 列をクリックします。

  7. 詳細ペインで、​[App url (アプリケーション URL)]​ アドレスをコピーします。

オブジェクトストアにデータを送信する

コマンドラインプロンプトから、​curl​ コマンドを使用して JSON データを Mule アプリケーションに送信します。

curl -X POST -H "Content-Type: application/json" -d '{ "key": "TestKey01", "value": "Testing" }' "http://app-url/store"

app-url​ は Runtime Manager で ​[App url (アプリケーション URL)]​ からコピーした名前に変更します。

オブジェクトストアのデータを表示する

オブジェクトストアのデータを表示する手順は、次のとおりです。

  1. Runtime Manager で、アプリケーションの名前をクリックしてダッシュボードを表示します。

  2. 左側のナビゲーションペインで ​[Object Store (オブジェクトストア)]​ をクリックします。

  3. オブジェクトストア、パーティション、そしてキーをクリックします。

    Runtime Manager の [Object Store (オブジェクトストア)] オプション、キー、値
    Figure 2. このスクリーンショットは、(​1​) オブジェクトストア、(​2​) キー、(​3​) オブジェクトストアの値を示しています。

    各列に、オブジェクトストア名、パーティション名、キー、キーデータが表示されます。 パーティションでオブジェクトストアのキーがグループ化されます。

    curl​ から送信した ​TestKey01​ キーが ​[binary value] BINARY​ 値でオブジェクトストアに表示されます。 この値はバイナリです。これは、Mule 4 では値を Mule オブジェクトでラップして、Anypoint Platform で値がバイナリでのみ表示されるようにするためです。

  4. キーを削除するには、キー名にカーソルを置き、ゴミ箱アイコンをクリックします。

    同様に、パーティションやストア自体もその上にマウスポインターを置き、ゴミ箱アイコンをクリックすれば削除できます。

    実行中のアプリケーションに関連付けられているオブジェクトストアは削除しないでください。 エラーを防ぐには、オブジェクトストアを削除する前にアプリケーションを停止します。

チュートリアルでは、Mule 3 および Mule 4 アプリケーションでのオブジェクトストアの作成に関するより詳細な情報を提供しています。

カスタム存続期間を設定する

カスタム存続期間 (TTL) は、オブジェクトストア設定で定義されたパーティションに適用されます。

ローリング TTL の動作についての詳細は、​「ローリング TTL」​を参照してください。

オブジェクトストアに保存されているキーのカスタム TTL 期間を設定する手順は、次のとおりです。

  1. Mule Runtime Engine バージョン 4.2.1 以降を使用するアプリケーションを作成します。

  2. アプリケーションでオブジェクトストアを設定します。

  3. フローで ​Store​ 操作を選択し、プロパティウィンドウで ​[Object store (オブジェクトストア)]​ 項目の右にある緑のプラスアイコン (+) をクリックします。

    プロパティウィンドウの緑のプラスアイコン
    Figure 3. 矢印は、プロパティウィンドウの緑のプラスアイコンを示しています。
  4. [Global Object Store Configuration (グローバルオブジェクトストア設定)]​ ウィンドウで TTL エントリを設定します。

    「Global Object Store Configuration (グローバルオブジェクトストア設定)」 ウィンドウ
    Figure 4. 矢印は、​[Global Object Store Configuration (グローバルオブジェクトストア設定)]​ ウィンドウの ​[Entry ttl (エントリ TTL)]​ 項目を示しています。
    Object Store v2 では、​[Max entries (最大エントリ)]​ 項目は設定できません。
    • Entry ttl (エントリ TTL)

      Mule 4.2.1 以降では、0 から 2592000 秒 (30 日) までのカスタム TTL 値を入力します。

      Entry ttl​ が空白でなければ、TTL は静的です。

      この項目を空白のままにした場合、TTL が有効になります。2592000 秒より大きい場合、TTL のデフォルトは 2592000 秒になります。

      4.2.1 より前の Mule バージョンについては、この項目を空白のままにすると TTL が 2592000 秒に設定されます。

    • Entry ttl unit (エントリ TTL 単位)

      MINUTES (分) のように TTL 時間間隔を指定します。

    • Expiration interval (有効期限間隔)

      有効期間スレッドを実行する頻度を指定します。

      このパラメーターは ​[Entry ttl (エントリ TTL)]​ 値より小さい正の値に設定します。 この項目が空白であるか、値が 0 以下の場合、Object Store v2 では ​[Entry ttl (エントリ TTL)]​ が無視されます。

    • Expiration interval unit (有効期限間隔単位)

      MINUTES (分) のように有効期限間隔時間単位を指定します。

  5. [OK]​ をクリックしてウィンドウを閉じます。

オブジェクトストアパーティションを作成する

パーティション​を使用して複数のオブジェクトストアをアプリケーションに関連付けることができます。

Object Store v2 でパーティションを作成する手順は、次のとおりです。

  1. アプリケーションを作成して Store 操作をフローに追加します。

  2. Store 操作を設定します。

  3. パーティションを設定します。

    1. プロパティウィンドウで、​[Object store (オブジェクトストア)]​ 項目の右にある緑のプラスアイコン (+) をクリックします。

      プロパティウィンドウの緑のプラスアイコン
      Figure 5. 矢印は、プロパティウィンドウの緑のプラスアイコンを示しています。
    2. [Global Element Properties (グローバル要素のプロパティ)]​ ウィンドウで、​[Configuration Reference (設定参照)]​ の右にある緑のプラスアイコン (+) をクリックしてグローバルオブジェクトストア設定を作成します。

      「Global Element Properties (グローバル要素のプロパティ)」 ウィンドウの 「Configuration Reference (設定参照)」 項目の緑のプラスアイコン
      Figure 6. 矢印は、​[Global Element Properties (グローバル要素のプロパティ)]​ ウィンドウの ​[Configuration Reference (設定参照)]​ 項目の緑のプラスアイコンを示しています。
    3. オブジェクトストア設定に名前を付けて、​[OK]​ をクリックします。

    4. 適切な設定参照が選択されていることを確認して、​[OK]​ をクリックします。

    5. 適切なオブジェクトストアが選択されていることを確認して、​[OK]​ をクリックします。

  4. 作成する各パーティションでステップ 3 を繰り返します。

  5. アプリケーションを CloudHub にデプロイし、キー-値ペアをオブジェクトストアに送信します。

  6. Runtime Manager で ​[Applications (アプリケーション)]​ をクリックし、アプリケーションを選択して左側のナビゲーションペインで ​[Object Store (オブジェクトストア)]​ をクリックします。

  7. オブジェクトストアを選択します。

    オブジェクトストアに関連付けられたパーティションが ​[Object Store (オブジェクトストア)]​ ページに表示されます。

    「Object Store (オブジェクトストア)」 ページのパーティション
    Figure 7. 矢印は、​[Object Store (オブジェクトストア)]​ ページのパーティションを示しています。

Mule Maven プラグインを使用して Object Store v2 を使用するアプリケーションをデプロイ

Mule Maven プラグインバージョン 3.4.0 以前を使用してアプリケーションを CloudHub にデプロイする場合、次の手順を実行します。

  1. <objectStoreV2>​ 要素を ​pom.xml​ プロジェクトファイルに追加します。

    <cloudHubDeployment>
      ...
        <objectStoreV2>true</objectStoreV2>
      ...
    </cloudHubDeployment>
  2. Runtime Manager の ​[Deploy Application (アプリケーションをデプロイ)]​ ページで ​[Use Object Store v2 (Object Store v2 を使用)]​ を選択します。