Risoluzione dei problemi — RabbitMQ
Il cluster resta in « Creating » o passa in « Error »
Causa: il provisioning è in corso, oppure la piattaforma non è riuscita ad applicare la creazione del cluster o la sua ultima modifica (ad esempio per mancanza di risorse disponibili). In questo secondo caso, lo stato passa a Error; dopo una modifica, il cluster può continuare a funzionare con la configurazione precedente.
Soluzione:
- Attenda qualche minuto: la pagina di dettaglio e l'elenco si aggiornano automaticamente.
- Se lo stato resta in Creating per un tempo anomalo o passa a Error, contatti il supporto indicando il nome del progetto, il nome del cluster e il suo identificativo (mostrato sotto il nome del cluster, con un pulsante di copia).
Un vhost o un utente viene rifiutato
Causa: il nome non rispetta le regole di denominazione. I nomi di vhost e di utente accettano solo lettere minuscole, cifre e trattini, e devono iniziare con una lettera e terminare con una lettera o una cifra: my_vhost, App.User o /prod sono rifiutati.
Soluzione: scelga un nome conforme, ad esempio prod o app-user. Consulti Concetti.
« Storage quota exceeded for this project » nella procedura guidata
Causa: la dimensione del disco moltiplicata per il numero di repliche supera lo storage residuo della quota del progetto.
Soluzione:
- Riduca il Disk size (GB) o il Number of replicas.
- Se necessario, liberi storage nel progetto o faccia aumentare la quota del progetto.
« A cluster with this name already exists. »
Causa: un cluster RabbitMQ del progetto ha già questo nome.
Soluzione: torni al passaggio General e scelga un altro Cluster Name.
La zona External mostra « Disabled » o « Waiting for allocation… »
Causa: l'External Access è disattivato, oppure l'indirizzo pubblico non è ancora assegnato.
Soluzione:
- « Disabled »: attivi l'accesso esterno (vedere Configurare l'accesso esterno). Dal progetto non è necessario: utilizzi l'host della zona Internal.
- Se l'accesso esterno è attivato, attenda e poi ricarichi la pagina.
Connessione AMQP rifiutata (ACCESS_REFUSED)
Causa: credenziali errate, oppure l'utente non ha diritti sul vhost richiesto.
Soluzione:
- Verifichi nella tabella Users (colonna VHosts) che l'utente abbia effettivamente un diritto sul vhost utilizzato dal client.
- Se necessario, aggiunga l'accesso con Manage Access.
- Se la password è stata smarrita o è dubbia, ne generi una nuova con Change Password e aggiorni il client.
- Verifichi che il client indichi il vhost corretto (nome esatto, con distinzione tra maiuscole e minuscole).
Connessione impossibile (timeout, connessione rifiutata)
Causa: accesso esterno disattivato, indirizzo o porta errati, oppure filtraggio di rete lato client.
Soluzione:
- Verifichi l'indirizzo utilizzato nella sezione Connection: zona External da Internet, zona Internal dal progetto.
- Utilizzi la porta 5672.
- Verifichi l'apertura della porta dalla macchina client:
nc -zv <host> 5672
- Verifichi che la sua rete o il firewall locale autorizzino le connessioni in uscita verso questa porta.
Pubblicazioni bloccate (flow control, allarme di memoria o disco)
Causa: RabbitMQ blocca le pubblicazioni quando raggiunge la soglia di memoria (high watermark) o quando lo spazio su disco è insufficiente, per proteggere il broker. I client ricevono allora una notifica connection.blocked.
Soluzione:
- Lato applicazioni, verifichi che i consumer tengano il ritmo dei producer ed elimini i messaggi dalle queue che accumulano messaggi non consumati.
- Aumenti il Disk size (GB) da Edit se l'allarme riguarda il disco (vedere Modificare la configurazione di un cluster).
- Il preset (memoria) non è modificabile dopo la creazione: crei un cluster con un preset superiore oppure contatti il supporto.
Messaggi non instradati
Causa: il producer pubblica verso un exchange senza binding corrispondente (tipo di exchange errato, routing key errata, binding mancante). Il messaggio viene quindi scartato.
Soluzione:
- Verifichi nel codice del producer il nome dell'exchange e la routing key.
- Verifichi che il consumer dichiari correttamente il binding tra la queue e l'exchange.
- Pubblichi con il flag
mandatoryper essere avvisato dei messaggi non instradati, oppure dichiari un alternate exchange per acquisirli.
L'eliminazione del cluster non riesce
Causa: un conflitto impedisce l'eliminazione (« Cannot delete this cluster (conflict). ») oppure il servizio è momentaneamente non disponibile.
Soluzione: riprovi qualche minuto più tardi. Se l'errore persiste, contatti il supporto.