Zum Inhalt springen

Validation-Konnektor

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

{
"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 }
]
}
}
  • rules (erforderlich, min 1): Liste der Regeln pro Feld
  • onInvalid (erforderlich): Verhalten, wenn mindestens eine Regel fehlschlägt — drop, forward oder tag
  • invalidTag: Schlüssel, der im tag-Modus in die Payload geschrieben wird (Standard _valid)
  • key (erforderlich): Zu prüfender Payload-Feldname
  • type (erforderlich): string, number oder boolean
  • required: Bei true schlägt ein fehlendes Feld die Regel fehl. Bei false ü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)
  • number — Akzeptiert jeden numerischen Wert, der in float64 konvertierbar ist (int, float usw.). Typ-Mismatch wird als Fehler gemeldet.
  • string — Akzeptiert Go-string. Wenn pattern gesetzt ist, muss der Wert übereinstimmen.
  • boolean — Akzeptiert Go-bool.

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.

{ "onInvalid": "drop" }

Fehlgeschlagene Payloads werden still verworfen (Fehler erscheinen weiterhin auf dem Fehlerkanal). Nur gültige Payloads werden weitergeleitet.

{ "onInvalid": "forward" }

Jede Payload wird unabhängig von der Gültigkeit weitergeleitet. Verwenden Sie dies nur zur Überwachung.

{
"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.

  1. Fehlerhafte Sensorwerte ablehnen, bevor sie den Speicher erreichen
  2. ID-Konventionen durchsetzen mit Regex-Mustern (z.B. Asset-Tags)
  3. Bereichsblockierung für physische Sensoren mit bekannten Betriebsumschlägen
  4. Weiche Validierung mit tag-Modus für nachgelagerte Router-basierte Behandlung
{
"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.

{
"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.

  • Verwenden Sie drop fü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
  • Router - Verzweigung auf dem _valid-Tag
  • Transform - Felder vor der Validierung ableiten oder umbenennen
  • Filter - Unerwünschte Schlüssel verwerfen