Validation-Konnektor
Übersicht
Abschnitt betitelt „Übersicht“Der Validation-Konnektor prüft jede Payload gegen eine Liste von Feldregeln. Wenn eine Regel fehlschlägt, entscheidet die konfigurierte onInvalid-Richtlinie, ob die Payload verworfen, unverändert weitergeleitet oder mit einem Gültigkeits-Flag gekennzeichnet wird.
Konnektor-Typ: MeddleValidation
Konfiguration
Abschnitt betitelt „Konfiguration“{ "type": "MeddleValidation", "config": { "onInvalid": "drop", "rules": [ { "key": "temperature", "type": "number", "required": true, "min": -40, "max": 150 }, { "key": "sensor_id", "type": "string", "required": true, "pattern": "^S-[0-9]{4}$" }, { "key": "active", "type": "boolean", "required": false } ] }}Konfigurationsparameter
Abschnitt betitelt „Konfigurationsparameter“- rules (erforderlich, min 1): Liste der Regeln pro Feld
- onInvalid (erforderlich): Verhalten, wenn mindestens eine Regel fehlschlägt —
drop,forwardodertag - invalidTag: Schlüssel, der im
tag-Modus in die Payload geschrieben wird (Standard_valid)
Regelfelder
Abschnitt betitelt „Regelfelder“- key (erforderlich): Zu prüfender Payload-Feldname
- type (erforderlich):
string,numberoderboolean - required: Bei
trueschlägt ein fehlendes Feld die Regel fehl. Beifalseüberspringt ein fehlendes Feld die Regel. - min, max: Inklusiver numerischer Bereich (nur gültig für
type: number) - pattern: Regulärer Ausdruck (nur gültig für
type: string)
Typprüfungen
Abschnitt betitelt „Typprüfungen“- number — Akzeptiert jeden numerischen Wert, der in
float64konvertierbar ist (int, float usw.). Typ-Mismatch wird als Fehler gemeldet. - string — Akzeptiert Go-
string. Wennpatterngesetzt ist, muss der Wert übereinstimmen. - boolean — Akzeptiert Go-
bool.
Bereich und Muster
Abschnitt betitelt „Bereich und Muster“min / max sind inklusiv. Ein temperature von genau -40 besteht min: -40. Regex-Muster werden einmal beim Start mit Gos RE2-Syntax kompiliert; ungültige Muster verhindern den Start des Konnektors.
On-Invalid-Richtlinien
Abschnitt betitelt „On-Invalid-Richtlinien“Drop-Modus
Abschnitt betitelt „Drop-Modus“{ "onInvalid": "drop" }Fehlgeschlagene Payloads werden still verworfen (Fehler erscheinen weiterhin auf dem Fehlerkanal). Nur gültige Payloads werden weitergeleitet.
Forward-Modus
Abschnitt betitelt „Forward-Modus“{ "onInvalid": "forward" }Jede Payload wird unabhängig von der Gültigkeit weitergeleitet. Verwenden Sie dies nur zur Überwachung.
Tag-Modus
Abschnitt betitelt „Tag-Modus“{ "onInvalid": "tag", "invalidTag": "is_valid"}Ungültige Payloads werden mit dem auf false gesetzten Tag-Schlüssel weitergeleitet. Gültige Payloads werden unverändert durchgereicht. Wenn invalidTag weggelassen wird, ist der Standardwert _valid.
Anwendungsfälle
Abschnitt betitelt „Anwendungsfälle“- Fehlerhafte Sensorwerte ablehnen, bevor sie den Speicher erreichen
- ID-Konventionen durchsetzen mit Regex-Mustern (z.B. Asset-Tags)
- Bereichsblockierung für physische Sensoren mit bekannten Betriebsumschlägen
- Weiche Validierung mit
tag-Modus für nachgelagerte Router-basierte Behandlung
Beispiel: Strict Drop
Abschnitt betitelt „Beispiel: Strict Drop“{ "type": "MeddleValidation", "config": { "onInvalid": "drop", "rules": [ { "key": "device_id", "type": "string", "required": true, "pattern": "^DEV-[A-Z0-9]+$" }, { "key": "temperature", "type": "number", "required": true, "min": -20, "max": 120 }, { "key": "online", "type": "boolean", "required": true } ] }}Jede Payload, der ein Feld fehlt, die das Regex nicht besteht oder bei der temperature außerhalb von [-20, 120] liegt, wird verworfen.
Beispiel: Tag und Route
Abschnitt betitelt „Beispiel: Tag und Route“{ "type": "MeddleValidation", "config": { "onInvalid": "tag", "invalidTag": "is_valid", "rules": [ { "key": "pressure", "type": "number", "required": true, "min": 0, "max": 200 } ] }}Mit einem nachgelagerten Router kombinieren, der auf is_valid verzweigt, um saubere und schmutzige Payloads an verschiedene Sinks zu senden.
Best Practices
Abschnitt betitelt „Best Practices“- Verwenden Sie
dropfür harte Schemas an der Grenze zwischen vertrauenswürdigen/nicht vertrauenswürdigen Daten - Verwenden Sie
tag+ Router, wenn Sie ungültige Payloads inspizieren oder unter Quarantäne stellen möchten, anstatt sie zu verlieren - Halten Sie Regex-Muster verankert (
^...$), um versehentliche Teilübereinstimmungen zu vermeiden - Setzen Sie enge numerische Bereiche basierend auf physikalischen/betrieblichen Grenzen — dies erkennt Sensorfehler frühzeitig
- Platzieren Sie Validation am Anfang von Pipelines, damit nachgelagerte Konnektoren wohlgeformte Payloads annehmen können