Risoluzione dei problemi — NATS
NATS non è ancora disponibile in self-service nella console Hikube. Per effettuare il provisioning di un'istanza o modificarne la configurazione, contatti il supporto.
Le diagnosi seguenti si eseguono dalla CLI nats (vedere l'avvio rapido per salvare un contesto di connessione). Quando è necessario un intervento lato piattaforma (risorse, storage, riavvio, log del server), contatti il supporto indicando il progetto e il nome dell'istanza.
Messaggi persi (senza JetStream)
Causa: JetStream non è attivato oppure nessuno stream è configurato per acquisire i messaggi. Senza JetStream, NATS funziona in modalità fire-and-forget: i messaggi vengono consegnati solo ai subscriber connessi al momento della pubblicazione.
Soluzione:
- Verifichi che JetStream sia disponibile per il suo account:
Se JetStream non è attivato sull'istanza, contatti il supporto.nats account info
- Crei uno stream per acquisire i messaggi dei subject desiderati:
nats stream add --subjects "orders.>" --storage file --replicas 3 --retention limits orders-stream
- Verifichi che lo stream sia stato creato e acquisisca i messaggi:
nats stream info orders-stream
Il consumer non riceve i messaggi
Causa: il consumer è iscritto a un subject che non corrisponde a quello utilizzato dal producer. Gli errori più comuni includono un refuso nel nome del subject, un uso errato dei caratteri jolly o una configurazione errata del queue group.
Soluzione:
- Verifichi il subject esatto utilizzato dal producer e dal consumer: i subject distinguono tra maiuscole e minuscole.
- Verifichi la ricezione con una sottoscrizione diagnostica:
In questo modo può vedere tutti i messaggi che il suo utente è autorizzato a ricevere.nats sub ">"
- Verifichi i caratteri jolly utilizzati:
orders.*non corrisponde aorders.new.urgent(utilizziorders.>per i sottolivelli). - Se utilizza i queue group, verifichi che il consumer sia effettivamente membro del gruppo previsto e che il nome del gruppo sia identico.
Storage JetStream pieno
Causa: il volume JetStream ha raggiunto la capacità massima. I nuovi messaggi non possono più essere resi persistenti e le pubblicazioni falliscono.
Soluzione:
- Verifichi l'utilizzo dello storage JetStream:
nats account info
- Individui gli stream più voluminosi:
nats stream list
- Elimini i messaggi vecchi dagli stream che lo consentono:
nats stream purge <nome-stream>
- Regoli la politica di conservazione degli stream: utilizzi
limitsconmax-ageper eliminare automaticamente i messaggi vecchi:nats stream edit <nome-stream> --max-age 72h - Se necessario, richieda l'aumento del volume JetStream. Questa opzione non è disponibile nella console; contatti il supporto.
Memoria insufficiente
Causa: il server NATS consuma più memoria del limite assegnato, spesso a causa di un numero elevato di connessioni, di messaggi voluminosi (max_payload elevato) o di stream JetStream in memoria.
Soluzione:
- Preferisca lo storage
filerispetto amemoryper gli stream voluminosi. - Riduca la dimensione dei messaggi pubblicati se non sono necessari messaggi molto voluminosi.
- Se il problema persiste, richieda un preset superiore o una regolazione di
max_payload. Questa opzione non è disponibile nella console; contatti il supporto.
Connessione rifiutata
Causa: URL o porta errati, credenziali errate oppure tentativo di connessione dall'esterno della piattaforma senza accesso esterno attivato.
Soluzione:
- Verifichi di utilizzare l'URL e le credenziali comunicati dal supporto.
- Verifichi la connessione:
nats server check connection --server <nats-url> --user <utente> --password <password>
- Un errore
Authorization Violationindica credenziali errate; chieda al supporto di verificare o rinnovare la password. - Se si connette dall'esterno della piattaforma, verifichi con il supporto che l'accesso esterno sia attivato sull'istanza.