Générez des graphiques WASM avec état en utilisant le magasin d’état

Le magasin d’états permet aux opérateurs de conserver et de récupérer des données dans le traitement des messages et d’activer les opérations avec état dans vos graphiques de flux de données. Cet article montre comment utiliser le stockage d'état dans l'environnement de développement local Opérations Azure IoT avec des opérateurs WASM.

Avant de suivre les étapes décrites dans cet article, configurez votre environnement de développement local et générez et exécutez une application de graphe localement. Pour plus d’informations, consultez Générer des modules WASM pour les flux de données.

Prerequisites

Remplissez les conditions préalables répertoriées dans les modules BUILD WASM pour les flux de données.

Ouvrir l’espace de travail d’exemple du magasin d’état

Clonez le référentiel Explore IoT Operations si ce n'est déjà fait.

Ouvrez le dossier explore-iot-operations/samples/wasm/statestore-scenario. Ce dossier contient les ressources suivantes :

  • graph.dataflow.yaml - Configuration du graphe de flux de données avec un opérateur doté d’un magasin d’état activé.
  • statestore.json - Configuration du magasin d’état avec des paires clé-valeur.
  • data/ - Exemples de données d’entrée pour les tests.
  • operators/ - Code source pour les opérateurs otel-enrich et filter.

Configurer le magasin d’états

  1. Ouvrez le statestore.json fichier pour afficher la configuration actuelle du magasin d’états.

  2. Vous pouvez modifier les valeurs de factoryId ou machineId pour les tests. Le paramètre d’enrichissement fait référence à ces clés.

  3. Ouvrez graph.dataflow.yaml et passez en revue la configuration de l’enrichissement. Les sections significatives de ce fichier sont présentées dans l’extrait de code suivant :

    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"
    

    La valeur par défaut du paramètre enrichKeys (factoryId,machineId) détermine les clés récupérées du magasin d’état et ajoutées comme attributs.

  4. Vérifiez que chaque clé répertoriée enrichKeys existe dans statestore.json. Si vous ajoutez ou supprimez des clés dans statestore.json, mettez à jour la valeur de default ou remplacez-la à l’aide de la variable d'environnement TK_CONFIGURATION_PARAMETERS.

Mettre à jour les données de test (facultatif)

Vous pouvez modifier les données de test dans le data/ dossier pour tester différentes valeurs d’entrée. Les exemples de données incluent des lectures de température.

Construire et exécuter le scénario de magasin de l'état

Si vous avez précédemment arrêté l’environnement d’exécution local, appuyez sur Ctrl+Shift+P pour ouvrir la palette de commandes et rechercher Opérations Azure IoT : Démarrer l’environnement de développement. Sélectionnez la mise en production comme mode d’exécution.

  1. Appuyez sur Ctrl+Shift+P pour ouvrir la palette de commandes et rechercher Opérations Azure IoT : Générer tous les opérateurs Data Flow. Sélectionnez la mise en production en tant que mode de génération. Attendez la fin de la génération.

  2. Appuyez à nouveau sur Ctrl+Shift+P et recherchez Opérations Azure IoT : Exécuter Application Graph. Sélectionnez la mise en production comme mode d’exécution.

  3. Sélectionnez le data dossier dans votre espace de travail VS Code pour vos données d’entrée. Le conteneur DevX démarre pour exécuter le graphique avec l’exemple d’entrée.

Vérifier la fonctionnalité de magasin d’état

Une fois l’exécution du graphique terminée :

  1. Affichez les résultats dans le data/output/ dossier.

  2. Ouvrez le fichier généré .txt pour afficher les données traitées. La section user properties des messages de sortie inclut les valeurs factoryId et machineId récupérées à partir du magasin d’états.

  3. Vérifiez les journaux dans data/output/logs/host-app.log pour confirmer que l’opérateur otel-enrich a récupéré des valeurs à partir du magasin d’état et les a ajoutées comme propriétés utilisateur aux messages.