Creare grafici WASM con stato mantenuto con l'archivio di stati

L'archivio di stato consente agli operatori di rendere persistenti e recuperare i dati durante l'elaborazione dei messaggi e di abilitare operazioni con stato nei grafici del flusso di dati. Questo articolo illustra come usare l'archivio stati con gli operatori WASM nell'ambiente di sviluppo locale Azure IoT Operations.

Prima di completare i passaggi descritti in questo articolo, configurare l'ambiente di sviluppo locale ed eseguire un'applicazione graph in locale. Per altre informazioni, vedere Creare moduli WASM per i flussi di dati.

Prerequisiti

Completare i prerequisiti elencati in Compilare moduli WASM per i flussi di dati.

Aprire l'area di lavoro di esempio della memoria di stato

Clonare il repository Explore IoT Operations se non è già stato fatto.

Aprire la cartella explore-iot-operations/samples/wasm/statestore-scenario. Questa cartella contiene le risorse seguenti:

  • graph.dataflow.yaml - Configurazione del grafico del flusso di dati con un operatore abilitato per l'archivio stati.
  • statestore.json - Configurazione dell'archivio degli stati con coppie di chiave-valore.
  • data/ - Dati di input di esempio per i test.
  • operators/ - Codice sorgente per gli operatori otel-enrich e filter.

Configurare l'archivio dello stato

  1. Aprire il statestore.json file per visualizzare la configurazione corrente dell'archivio stati.

  2. È possibile modificare i valori di factoryId o machineId per il test. Il parametro di arricchimento fa riferimento a queste chiavi.

  3. Aprire graph.dataflow.yaml ed esaminare la configurazione di arricchimento. Le sezioni significative di questo file sono illustrate nel frammento di codice seguente:

    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"
    

    Il enrichKeys valore predefinito del parametro (factoryId,machineId) determina quali chiavi vengono recuperate dall'archivio stati e aggiunte come attributi.

  4. Verificare che ogni chiave elencata in enrichKeys esista in statestore.json. Se si aggiungono o si rimuovono chiavi in statestore.json, aggiornare o sovrascrivere il valore di default usando la variabile di ambiente TK_CONFIGURATION_PARAMETERS.

Aggiornare i dati di test (facoltativo)

È possibile modificare i dati di test nella data/ cartella per sperimentare con valori di input diversi. I dati di esempio includono letture della temperatura.

Compilare ed eseguire lo scenario dell'archivio dello stato

Se in precedenza è stato arrestato l'ambiente di esecuzione locale, premere Ctrl+Shift+P per aprire il riquadro comandi e cercare Azure IoT Operations: Avvia ambiente di sviluppo. Selezionare release come modalità di esecuzione.

  1. Premere Ctrl+Shift+P per aprire la palette comandi e cercare Azure IoT Operations: Costruisci tutti gli operatori Data Flow. Selezionare Release (Versione ) come modalità di compilazione. Attendere il completamento del processo di compilazione.

  2. Premere di nuovo Ctrl+Shift+P e cercare Azure IoT Operations: Esegui il Grafico dell'Applicazione. Selezionare release come modalità di esecuzione.

  3. Selezionare la cartella nell'area data di lavoro di VS Code per i dati di input. Il contenitore DevX si avvia per eseguire il grafico con l'input di esempio.

Verificare la funzionalità dell'archivio di stato

Al termine dell'esecuzione del grafo:

  1. Visualizzare i risultati nella data/output/ cartella .

  2. Aprire il file generato .txt per visualizzare i dati elaborati. La user properties sezione dei messaggi di output include i valori factoryId e machineId recuperati dall'archivio degli stati.

  3. Controllare i log in data/output/logs/host-app.log per verificare che l'operatore otel-enrich abbia recuperato i valori dall'archivio stati e li abbia aggiunti come proprietà utente ai messaggi.