Salta ai contenuti

Connettore NATS

Il connettore NATS abilita la messaggistica publish/subscribe su un server o cluster NATS, con autenticazione opzionale tramite token o file di credenziali JWT.

Tipi Connettore:

  • NatsReader - Sottoscrivi a un subject
  • NatsWriter - Pubblica su un subject

Sottoscrivi a un subject:

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

Quando queue è impostato, NATS distribuisce i messaggi tra tutti i reader nello stesso queue group, in modo che solo un sottoscrittore riceva ogni messaggio:

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

File di Credenziali JWT (NATS NGS / Auth Decentralizzata)

Sezione intitolata “File di Credenziali JWT (NATS NGS / Auth Decentralizzata)”
{
"type": "NatsReader",
"config": {
"url": "tls://connect.ngs.global:4222",
"subject": "events.>",
"credsFile": "/etc/meddle/nats.creds"
}
}

Pubblica su un subject:

{
"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: URL del server NATS (nats://host:port o tls://host:port); separa con virgole per URL di cluster
  • subject: Subject per sottoscrizione o pubblicazione (supporta wildcard * e > sul reader)
  • queue: (Reader) Nome del queue group per consegna con bilanciamento di carico
  • token: (Opzionale) Token per autenticazione tramite token
  • credsFile: (Opzionale) Percorso di un file di credenziali NATS (.creds) per auth JWT/nkey

I subject NATS sono separati da punti. Wildcard:

  • * corrisponde esattamente a un token: sensors.*.temperature
  • > corrisponde a uno o più token di coda: factory.events.>

I queue group offrono scalabilità orizzontale nativa NATS senza coordinazione esterna:

  • Più reader con lo stesso queue condividono lo stream dei messaggi; ogni messaggio va esattamente a un sottoscrittore del gruppo.
  • Più reader con nomi di queue diversi (o senza queue) ricevono ciascuno una copia completa di ogni messaggio.

Il connettore sceglie le credenziali dalla configurazione in questo ordine:

  1. credsFile se impostato, utilizzando credenziali utente NATS (JWT + seed nkey)
  2. token se impostato, utilizzando autenticazione tramite token
  3. Altrimenti la connessione è anonima

La riconnessione è automatica con un backoff di 2 secondi e retry illimitati.

  • MQTT - Pub/sub per dispositivi IoT
  • Kafka - Messaggistica durevole basata su log
  • AMQP - Alternativa pub/sub RabbitMQ