Routerコネクタ
Routerコネクタは、各受信ペイロードに対してMXL条件のリストを評価し、最初にマッチしたルートでタグ付けされたペイロードを発行します。これを使用して、単一のストリームを複数の論理チャネルに分割し、ダウンストリームのコネクタがそれらでブランチできるようにします。
コネクタタイプ: MeddleRouter
{ "type": "MeddleRouter", "config": { "routes": [ { "condition": "temperature > 80", "tag": "critical" }, { "condition": "temperature > 50", "tag": "warning" }, { "condition": "temperature <= 50", "tag": "normal" } ], "defaultTag": "unknown" }}コネクタはルートを上から下に評価します。conditionがtrueに評価される最初のものが勝ち、そのtagが予約されたキー_routeの下にペイロードに書き込まれます。
マッチしたすべてのペイロードに_routeフィールドが追加されます:
{ "temperature": 92.5, "sensor_id": "S-01", "_route": "critical"}ダウンストリームコネクタ(Filter、Trigger、Notificationなど)は、_routeでブランチして各タグを異なる宛先に送信できます。
設定パラメータ
Section titled “設定パラメータ”- routes(必須、最小1):ルート定義の順序付き配列。各ルートは以下を持ちます:
- condition(必須):ペイロードに対して評価されるMXL式
- tag(必須):条件がマッチした時に
_routeに書き込まれる文字列
- defaultTag: どのルートにもマッチしない場合に適用されるオプションのタグ。未設定でどのルートにもマッチしない場合、ペイロードはドロップされ、エラーが発行されます。
ルートはMXL(Meddle Expression Language)を使用します — TriggerおよびAlertで使用されるのと同じ式構文です。
temperature > 80status == "active" && pressure < 10humidity >= 60 || temperature > 25count != 0条件は起動時にパースされ、無効なMXLはコネクタの起動を妨げます。
ユースケース
Section titled “ユースケース”- 重大度ベースのルーティング — テレメトリを通常/警告/重大ストリームに分割
- マルチテナントファンアウト — サイト、顧客、デバイスクラスでペイロードをタグ付け
- ワークフローブランチング — 異なるペイロード形状を異なるダウンストリームパイプラインに指示
- A/Bルーティング — トラフィックのサブセットを実験的なプロセッサに送信
例: マルチサイトルーティング
Section titled “例: マルチサイトルーティング”{ "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" }}各ペイロードは発生元サイトでタグ付けされ、認識可能なsite_idを持たないペイロードはunassignedチャネルに分類されます。
例: 重大度トリアージ
Section titled “例: 重大度トリアージ”{ "type": "MeddleRouter", "config": { "routes": [ { "condition": "vibration > 5.0 || temperature > 100", "tag": "critical" }, { "condition": "vibration > 2.0 || temperature > 70", "tag": "warning" }, { "condition": "true", "tag": "normal" } ] }}最後のエントリとしてのtrue条件は暗黙のデフォルトとして機能します。_routeフィールドは、Notification(critical -> Slack、warning -> email)またはFilter(normal -> drop)を駆動できます。
ベストプラクティス
Section titled “ベストプラクティス”- ルートを最も具体的なものから最も一般的なものへと並べる。最初のマッチのみが勝つ
defaultTagを使用して、すべてのペイロードがコネクタから出ることを保証 — そうでないとマッチしないペイロードはエラーになります- MXL条件は副作用がなく、上流が確実に投入するペイロードフィールドに基づくようにする
- 順序のみに依存する重複するルートを避ける — 明示的な条件の方が保守しやすい
- ダウンストリームのFilterまたはTriggerコネクタは、同じMXLを再評価するのではなく
_routeでブランチすべき