Vai al contenuto principale
Versione: 3.0.0-alpha (Diátaxis)

FAQ — RabbitMQ

Qual è la differenza tra quorum queue e classic queue?

RabbitMQ propone due tipi principali di code:

  • Quorum queue: basate sul protocollo Raft, i dati vengono replicati su più nodi del cluster. Garantiscono la durabilità e l'alta disponibilità dei messaggi. Raccomandate per la produzione.
  • Classic queue: archiviate su un solo nodo, più veloci in scrittura ma senza replica. In caso di guasto del nodo, i messaggi vengono persi.
suggerimento

Con 3 o più repliche (replicas: 3), RabbitMQ utilizza le quorum queue per impostazione predefinita, garantendo la durabilità dei messaggi in caso di guasto di un nodo.

A cosa servono i virtual host (vhost)?

I virtual host (vhost) forniscono un isolamento logico all'interno di uno stesso cluster RabbitMQ:

  • Ogni vhost possiede i propri exchange, code e binding
  • I permessi sono gestiti per vhost, consentendo di controllare l'accesso per applicazione
  • Un utente può avere ruoli diversi secondo il vhost (admin su uno, readonly sull'altro)

Esempio di configurazione con più vhost:

rabbitmq.yaml
vhosts:
production:
roles:
admin: ["admin"]
readonly: ["monitoring"]
staging:
roles:
admin: ["admin", "dev"]

Come funzionano gli exchange in RabbitMQ?

Un exchange riceve i messaggi dai produttori e li instrada verso le code secondo regole di binding:

TipoComportamento
directInstrada il messaggio verso la coda la cui routing key corrisponde esattamente
fanoutDiffonde il messaggio a tutte le code collegate, senza filtro
topicInstrada secondo un pattern di routing key (es. orders.*, logs.#)
headersInstrada secondo gli header del messaggio piuttosto che la routing key

Il produttore pubblica verso un exchange, mai direttamente verso una coda.

Quali protocolli sono supportati?

RabbitMQ su Hikube supporta i seguenti protocolli:

ProtocolloPortaUtilizzo
AMQP5672Protocollo principale per i messaggi
Management HTTP API15672Interfaccia web e API di gestione

Qual è la differenza tra resourcesPreset e resources?

Il campo resourcesPreset applica una configurazione CPU/memoria predefinita, mentre resources permette di specificare valori espliciti. Se resources è definito, resourcesPreset viene ignorato.

PresetCPUMemoria
nano100m128Mi
micro250m256Mi
small500m512Mi
medium500m1Gi
large12Gi
xlarge24Gi
2xlarge48Gi

Esempio con risorse esplicite:

rabbitmq.yaml
replicas: 3
resources:
cpu: 2000m
memory: 4Gi
size: 20Gi

Come accedere all'interfaccia di gestione?

L'interfaccia di gestione RabbitMQ è accessibile sulla porta 15672. Due opzioni:

Opzione 1 — Port-forward (accesso locale):

kubectl port-forward svc/<nome-rabbitmq> 15672:15672

Poi aprite http://localhost:15672 nel vostro browser.

Opzione 2 — Accesso esterno:

Attivate external: true nel vostro manifesto per esporre il servizio tramite un LoadBalancer:

rabbitmq.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: RabbitMQ
metadata:
name: rabbitmq
spec:
external: true
replicas: 3
resourcesPreset: small
size: 10Gi
avviso

L'accesso esterno espone le porte AMQP (5672) e Management (15672) su Internet. Assicuratevi di utilizzare password robuste per tutti gli utenti.