Il meccanismo di persistenza di RabbitMQ include la persistenza delle code, dei messaggi e degli scambi. Indipendentemente dalla persistenza dei messaggi, possono essere scritti su disco.
I messaggi persistenti vengono scritti sia su disco che in memoria (per velocizzare la lettura), mentre i messaggi non persistenti vengono scritti su disco quando la memoria è insufficiente (saranno persi dopo il riavvio di RabbitMQ).
Persistenza della Coda RabbitMQ
Nella dichiarazione di una coda, è possibile impostare se la coda deve essere persistente. In Golang, la coda viene dichiarata come segue:
q, err := ch.QueueDeclare(
"hello", // nome della coda
true, // se la coda deve essere persistente
false,
false,
false,
nil,
)
Suggerimento: Similmente ad altri linguaggi di programmazione, è possibile impostare la coda durante la sua dichiarazione.
Persistenza dello Scambio RabbitMQ
Nella dichiarazione di uno scambio, è possibile impostare se deve essere persistente utilizzando le proprietà. In Golang, viene dichiarato come segue:
err = ch.ExchangeDeclare(
"tizi365", // nome dello scambio
"fanout", // tipo di scambio
true, // se deve essere persistente
false,
false,
false,
nil,
)
Suggerimento: Similmente ad altri linguaggi di programmazione, la persistenza può essere impostata durante la dichiarazione dello scambio.
Persistenza del Messaggio RabbitMQ
Nella pubblicazione di un messaggio, è possibile impostare se il messaggio deve essere persistente attraverso le proprietà del messaggio.
Suggerimento: La persistenza della coda non implica che il messaggio sia automaticamente persistente.
In Golang, i messaggi vengono pubblicati come segue:
err = ch.Publish(
"tizi365", // scambio
"", // routing key
false,
false,
amqp.Publishing{
DeliveryMode:2, // modalità di consegna del messaggio, 1 per non persistente, 2 per persistente
ContentType: "text/plain",
Body: []byte(body),
})