ステート ストアを使用してステートフル WASM グラフを作成する

状態ストアを使用すると、オペレーターはメッセージ処理全体でデータを保持および取得でき、データ フロー グラフでステートフルな操作が可能になります。 この記事では、Azure IoT Operationsローカル開発環境で WASM 演算子と共に状態ストアを使用する方法について説明します。

この記事の手順を完了する前に、ローカル開発環境を設定し、グラフ アプリケーションをローカルでビルドして実行します。 詳しくは、 データ・フロー用の WASM モジュールのビルドを参照してください。

前提条件

データ フローの WASM モジュールのビルドに関するページに記載されている前提条件を満たす。

状態ストアのサンプル ワークスペースを開く

まだ行っていない場合は、Explore IoT Operations リポジトリを複製します。

explore-iot-operations/samples/wasm/statestore-scenario フォルダーを開きます。 このフォルダーには、次のリソースが含まれています。

  • graph.dataflow.yaml - 状態ストアが有効な演算子を使用したデータ フロー グラフの構成。
  • statestore.json - キーと値のペアを使用した状態ストアの構成。
  • data/ - テスト用のサンプル入力データ。
  • operators/ - otel-enrich 演算子とフィルター演算子のソース コード。

状態ストアを構成する

  1. statestore.json ファイルを開き、現在の状態ストアの構成を表示します。

  2. テスト用に factoryId または machineId の値を変更できます。 エンリッチメント パラメーターは、これらのキーを参照します。

  3. graph.dataflow.yamlを開き、エンリッチメントの構成を確認します。 このファイルの重要なセクションを次のスニペットに示します。

    moduleConfigurations:
      - name: module-otel-enrich/map
        parameters:
          enrichKeys:
            name: enrichKeys
            description: Comma separated list of DSS keys which will be fetched and added as attributes
            default: factoryId,machineId
    operations:
      - operationType: "source"
        name: "source"
      - operationType: "map"
        name: "module-otel-enrich/map"
        module: "otel-enrich"
      - operationType: "sink"
        name: "sink"
    

    enrichKeys パラメーターの既定値 (factoryId,machineId) によって、状態ストアからフェッチされ、属性として追加されるキーが決まります。

  4. enrichKeysに一覧表示されている各キーがstatestore.jsonに存在することを確認します。 statestore.jsonでキーを追加または削除する場合は、default値を更新するか、TK_CONFIGURATION_PARAMETERS環境変数を使用してオーバーライドします。

テスト データの更新 (省略可能)

data/ フォルダー内のテスト データを変更して、さまざまな入力値を試すことができます。 サンプル データには、温度の測定値が含まれています。

状態ストアのシナリオを構築して実行する

以前にローカル実行環境を停止した場合は、Ctrl+Shift+P キーを押してコマンド パレットを開き、Azure IoT Operations: 開発環境の開始を検索します。 実行モードとして リリース を選択します。

  1. Ctrl+Shift+P キーを押してコマンド パレットを開き、「Azure IoT Operations: すべてのData Flow演算子をビルドするを検索します。 ビルド モードとして リリース を選択します。 ビルドの完了を待ちます。

  2. Ctrl+Shift+P をもう一度押し、Azure IoT Operations: アプリケーション グラフの実行を検索します。 実行モードとして リリース を選択します。

  3. 入力データの VS Code ワークスペース内の data フォルダーを選択します。 DevX コンテナーが起動し、サンプル入力でグラフが実行されます。

状態ストアの機能を確認する

グラフの実行が完了した後:

  1. data/output/ フォルダーに結果を表示します。

  2. 生成された .txt ファイルを開き、処理されたデータを確認します。 出力メッセージの user properties セクションには、状態ストアから取得された factoryId 値と machineId 値が含まれます。

  3. data/output/logs/host-app.logのログを調べて、otel-enrich演算子が状態ストアから値を取得し、それらをユーザー プロパティとしてメッセージに追加したことを確認します。