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),
			})