Zum Inhalt springen

NATS-Konnektor

Der NATS-Konnektor ermöglicht Publish/Subscribe-Messaging auf einem NATS-Server oder -Cluster, mit optionaler Token- oder JWT-Credentials-File-Authentifizierung.

Konnektor-Typen:

  • NatsReader - Ein Subject abonnieren
  • NatsWriter - Auf einem Subject veröffentlichen

Ein Subject abonnieren:

{
"type": "NatsReader",
"config": {
"url": "nats://localhost:4222",
"subject": "sensors.temperature"
}
}

Wenn queue gesetzt ist, verteilt NATS Nachrichten über alle Reader in derselben Queue-Gruppe, sodass nur ein Abonnent jede Nachricht empfängt:

{
"type": "NatsReader",
"config": {
"url": "nats://nats.example.com:4222",
"subject": "factory.events.>",
"queue": "meddle-workers"
}
}
{
"type": "NatsReader",
"config": {
"url": "nats://nats.example.com:4222",
"subject": "secure.events",
"token": "s3cr3t-token"
}
}

JWT-Credentials-Datei (NATS NGS / Dezentralisierte Auth)

Abschnitt betitelt „JWT-Credentials-Datei (NATS NGS / Dezentralisierte Auth)“
{
"type": "NatsReader",
"config": {
"url": "tls://connect.ngs.global:4222",
"subject": "events.>",
"credsFile": "/etc/meddle/nats.creds"
}
}

Auf einem Subject veröffentlichen:

{
"type": "NatsWriter",
"config": {
"url": "nats://localhost:4222",
"subject": "processed.events"
}
}
{
"type": "NatsWriter",
"config": {
"url": "tls://connect.ngs.global:4222",
"subject": "processed.events",
"credsFile": "/etc/meddle/nats.creds"
}
}
  • url: NATS-Server-URL (nats://host:port oder tls://host:port); für Cluster-URLs durch Komma trennen
  • subject: Zu abonnierendes oder zu veröffentlichendes Subject (unterstützt *- und >-Wildcards beim Reader)
  • queue: (Reader) Queue-Gruppenname für lastverteilte Zustellung
  • token: (Optional) Token für die Token-Authentifizierung
  • credsFile: (Optional) Pfad zu einer NATS-Credentials (.creds)-Datei für JWT/nkey-Auth

NATS-Subjects sind punktgetrennt. Wildcards:

  • * entspricht genau einem Token: sensors.*.temperature
  • > entspricht einem oder mehreren nachfolgenden Tokens: factory.events.>

Queue-Gruppen bieten NATS-native horizontale Skalierung ohne externe Koordination:

  • Mehrere Reader mit derselben queue teilen sich den Nachrichtenstrom; jede Nachricht geht an genau einen Abonnenten in der Gruppe.
  • Mehrere Reader mit unterschiedlichen Queue-Namen (oder keiner Queue) erhalten jeweils eine vollständige Kopie jeder Nachricht.

Der Konnektor wählt Anmeldedaten aus der Konfiguration in dieser Reihenfolge aus:

  1. credsFile, wenn gesetzt, unter Verwendung von NATS-Benutzeranmeldedaten (JWT + nkey-Seed)
  2. token, wenn gesetzt, unter Verwendung der Token-Authentifizierung
  3. Andernfalls ist die Verbindung anonym

Die Wiederverbindung erfolgt automatisch mit einem 2-Sekunden-Backoff und unbegrenzten Wiederholungen.

  • MQTT - Pub/Sub für IoT-Geräte
  • Kafka - Dauerhaftes log-basiertes Messaging
  • AMQP - RabbitMQ-Pub/Sub-Alternative