Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In het schemaregister kunt u berichtindelingen valideren en gegevensconsistentie in de gegevensverwerking garanderen. In dit artikel wordt beschreven hoe u het schemaregister gebruikt met WASM-modules in de Azure IoT-bewerkingen lokale ontwikkelomgeving.
Voordat u de stappen in dit artikel uitvoert, moet u uw lokale ontwikkelomgeving instellen en lokaal een grafiektoepassing bouwen en uitvoeren. Zie voor meer informatie Build WASM-modules voor gegevensstromen.
Vereiste voorwaarden
Voltooi de vereisten die worden vermeld in build-WASM-modules voor gegevensstromen.
Open de voorbeeldwerkruimte van het schemaregister
Kloon de opslagplaats Explore IoT Operations als u dat nog niet hebt gedaan.
Open de map samples/wasm/schema-registry-scenario. Deze map bevat de volgende resources:
-
graph.dataflow.yaml- De configuratie van de gegevensstroomgrafiek. -
tk_schema_config.json- Het JSON-schema dat de host-app lokaal gebruikt om binnenkomende berichtpayloads te valideren voordat ze downstreamoperators bereiken. Houd dit bestand gesynchroniseerd met elk schema dat u naar uw Microsoft Azure-omgeving publiceert. -
data/- Voorbeeldinvoergegevens met verschillende berichtindelingen voor testen. -
operators/filter/- Broncode voor de filteroperator. - (Optional)
hostapp.env.list- De VS Code-extensie genereert automatisch een bij runtime toe te voegenTK_SCHEMA_CONFIG_PATH=tk_schema_config.json. Als u uw eigen schemabestand opgeeft, moet u ervoor zorgen dat de variabele ernaar verwijst.
Inzicht in de schemaconfiguratie
Open het tk_schema_config.json bestand om de schemadefinitie weer te geven:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"humidity": {
"type": "integer"
},
"temperature": {
"type": "number"
}
}
}
Dit schema definieert een JSON-object op het hoogste niveau dat twee numerieke eigenschappen kan bevatten: humidity (geheel getal) en temperature (getal). Voeg een "required": ["humidity", "temperature"] matrix toe als u ze beide nodig hebt, of breid de sectie uit naarmate uw properties payload-indeling zich ontwikkelt.
De volgende beperkingen gelden voor het lokale schemabestand (tk_schema_config.json). Het schemabestand:
- Maakt gebruik van de standaard syntaxis van het JSON-schema draft-07, hetzelfde concept dat wordt ondersteund door het Azure IoT-bewerkingen schemaregister.
- Is functioneel dezelfde inhoud die u in het cloudschemaregister registreert. U kunt kopiëren en plakken tussen de twee om consistent te blijven.
- Wordt verwezen door de host-app via de omgevingsvariabele
TK_SCHEMA_CONFIG_PATH.
Momenteel zijn de volgende beperkingen van toepassing in de lokale ontwikkelingsruntime:
- Er wordt slechts één schemaconfiguratiebestand geladen. Het opnemen van meerdere bestanden of het scannen van mappen wordt niet ondersteund.
-
$refnaar externe bestanden of URL's wordt niet lokaal ondersteund. Houd het schema op zichzelf. U kunt interne verwijzingen naar JSON-aanwijzers gebruiken, zoals{"$ref":"#/components/..."}. - Veelgebruikte concept-07-trefwoorden zoals
type,properties,required,enum,minimum,maximum,allOf,anyOf,oneOf,notenitemswerken allemaal. De onderliggende validator kan minder algemene of geavanceerde functies zoalscontentEncodingencontentMediaTypenegeren. - Houd de grootte van uw schema's tot minder dan ~1 MB voor snelle koude start.
- Versiebeheer- en schemaontwikkelingsbeleid worden niet lokaal afgedwongen. U bent verantwoordelijk voor het in overeenstemming blijven met het cloudregister.
Als u afhankelijk bent van geavanceerde constructies die lokaal mislukken, valideert u hetzelfde schema met het cloudregister na publicatie om pariteit te garanderen.
Zie concepten van schema-registraties in Azure IoT-bewerkingen voor meer informatie.
De testgegevens controleren
De data/ map bevat drie testbestanden:
-
temperature_humidity_payload_1.json- Bevat zowel temperatuur- als vochtigheidsgegevens. De vochtigheidswaarde (175.1) is echter geen geheel getal zoals opgegeven in het schema, dus de gegevens mislukken schemavalidatie en worden uitgefilterd. -
temperature_humidity_payload_2.json- Bevat alleen vochtigheidsgegevens en wordt uitgefilterd. -
temperature_humidity_payload_3.json- Bevat zowel temperatuur- als vochtigheidsgegevens en geeft validatie door.
Het schemaregisterscenario bouwen en uitvoeren
Als u de lokale uitvoeringsomgeving eerder hebt gestopt, drukt u op Ctrl+Shift+P om het opdrachtenpalet te openen en te zoeken naar Azure IoT-bewerkingen: Ontwikkelomgeving starten. Selecteer release als de uitvoeringsmodus.
Druk op
Ctrl+Shift+Pom het opdrachtenpalet te openen en te zoeken naar Azure IoT-bewerkingen: Bouw alle Gegevensstroom operators.Selecteer release als de buildmodus. Wacht tot de opbouw is voltooid.
Druk nogmaals op
Ctrl+Shift+Pen zoek naar Azure IoT-bewerkingen: Application Graph uitvoeren.Selecteer het
graph.dataflow.yamlgrafiekbestand.Selecteer release als de uitvoeringsmodus.
Selecteer de
datamap in uw VS Code-werkruimte voor uw invoergegevens. De DevX-container wordt gestart om de grafiek uit te voeren met de voorbeeldinvoer.
Schemavalidatie controleren
Nadat de verwerking is voltooid:
Controleer de
data/output/map voor de resultaten.De uitvoer bevat alleen de verwerkte versie van het
temperature_humidity_payload_3.jsonbericht omdat het voldoet aan het schema.Het
data/output/logs/host-app.logbestand bevat logboekvermeldingen die aangeven welke berichten worden geaccepteerd of geweigerd op basis van schemavalidatie.
In dit voorbeeld ziet u hoe het schemaregister binnenkomende berichten valideert en berichten filtert die niet voldoen aan het gedefinieerde schema.
Stop de lokale uitvoeringsomgeving wanneer u klaar bent met testen in de releasemodus door op Ctrl+Shift+P te drukken en te zoeken naar Azure IoT-bewerkingen: Ontwikkelomgeving stoppen.