Conector Router
Descripción General
Sección titulada «Descripción General»El conector Router evalúa una lista de condiciones MXL contra cada carga entrante y emite la carga etiquetada con la primera ruta coincidente. Úsalo para dividir un único flujo en múltiples canales lógicos sobre los que los conectores descendentes pueden ramificarse.
Tipo de Conector: MeddleRouter
Configuración
Sección titulada «Configuración»{ "type": "MeddleRouter", "config": { "routes": [ { "condition": "temperature > 80", "tag": "critical" }, { "condition": "temperature > 50", "tag": "warning" }, { "condition": "temperature <= 50", "tag": "normal" } ], "defaultTag": "unknown" }}El conector evalúa las rutas de arriba abajo. Gana la primera cuya condition se evalúe como true; su tag se escribe en la carga bajo la clave reservada _route.
Cada carga coincidente se enriquece con un campo _route:
{ "temperature": 92.5, "sensor_id": "S-01", "_route": "critical"}Los conectores descendentes (Filter, Trigger, Notification, etc.) pueden ramificarse según _route para enviar cada etiqueta a un destino diferente.
Parámetros de Configuración
Sección titulada «Parámetros de Configuración»- routes (obligatorio, mínimo 1): Array ordenado de definiciones de ruta. Cada ruta tiene:
- condition (obligatorio): Una expresión MXL evaluada contra la carga
- tag (obligatorio): Cadena escrita en
_routecuando la condición coincide
- defaultTag: Etiqueta opcional aplicada cuando ninguna ruta coincide. Si no se define y ninguna ruta coincide, la carga se descarta y se emite un error.
Expresiones MXL
Sección titulada «Expresiones MXL»Las rutas usan MXL (Meddle Expression Language) — la misma sintaxis de expresiones usada por Trigger y Alert.
temperature > 80status == "active" && pressure < 10humidity >= 60 || temperature > 25count != 0Las condiciones se parsean al inicio; un MXL inválido impide que el conector arranque.
Casos de Uso
Sección titulada «Casos de Uso»- Enrutamiento basado en severidad — divide la telemetría en flujos normal / warning / critical
- Fan-out multi-tenant — etiqueta cargas por sitio, cliente o clase de dispositivo
- Ramificación de flujos de trabajo — dirige diferentes formas de carga a diferentes pipelines descendentes
- Enrutamiento A/B — envía un subconjunto del tráfico a un procesador experimental
Ejemplo: Enrutamiento Multi-Sitio
Sección titulada «Ejemplo: Enrutamiento Multi-Sitio»{ "type": "MeddleRouter", "config": { "routes": [ { "condition": "site_id == \"plant-a\"", "tag": "plant_a" }, { "condition": "site_id == \"plant-b\"", "tag": "plant_b" }, { "condition": "site_id == \"plant-c\"", "tag": "plant_c" } ], "defaultTag": "unassigned" }}Cada carga se etiqueta con su sitio de origen, y cualquier carga sin un site_id reconocido cae en el canal unassigned.
Ejemplo: Clasificación por Severidad
Sección titulada «Ejemplo: Clasificación por Severidad»{ "type": "MeddleRouter", "config": { "routes": [ { "condition": "vibration > 5.0 || temperature > 100", "tag": "critical" }, { "condition": "vibration > 2.0 || temperature > 70", "tag": "warning" }, { "condition": "true", "tag": "normal" } ] }}Una condición true como última entrada actúa como un valor por defecto implícito. El campo _route puede entonces dirigir Notification (critical -> Slack, warning -> email) o Filter (normal -> descartar).
Mejores Prácticas
Sección titulada «Mejores Prácticas»- Ordena las rutas de la más específica a la más general; sólo gana la primera coincidencia
- Usa
defaultTagpara garantizar que toda carga salga del conector — de lo contrario, las cargas no coincidentes se vuelven errores - Mantén las condiciones MXL libres de efectos secundarios y basadas en campos de la carga que el upstream garantice rellenar
- Evita rutas superpuestas que dependan sólo del orden — las condiciones explícitas son más fáciles de mantener
- Los conectores Filter o Trigger descendentes deberían ramificar sobre
_routeen lugar de reevaluar la misma MXL
Conectores Relacionados
Sección titulada «Conectores Relacionados»- Trigger - Gating MXL de condición única
- Filter - Descartar o mantener cargas por clave
- Referencia MXL - Documentación completa de MXL