El mecanismo de persistencia de RabbitMQ incluye la persistencia de colas, mensajes y exchanges. Independientemente de si el mensaje es persistente o no, puede escribirse en disco.
Los mensajes persistentes se escriben tanto en disco como en la memoria (para acelerar la lectura), mientras que los mensajes no persistentes se escriben en disco cuando la memoria es insuficiente (se perderán después de que RabbitMQ se reinicie).
Persistencia de Colas en RabbitMQ
Al declarar una cola, puedes configurar si la cola necesita ser persistente. En Golang, la cola se declara de la siguiente manera:
q, err := ch.QueueDeclare(
"hello", // nombre de la cola
true, // si la cola debe ser persistente
false,
false,
false,
nil,
)
Consejo: Similar a otros lenguajes de programación, la persistencia de la cola se puede configurar al declararla.
Persistencia de Exchanges en RabbitMQ
Al declarar un exchange, puedes configurar si necesita ser persistente utilizando propiedades. En Golang, se declara de la siguiente manera:
err = ch.ExchangeDeclare(
"tizi365", // nombre del exchange
"fanout", // tipo de exchange
true, // si debe ser persistente
false,
false,
false,
nil,
)
Consejo: Similar a otros lenguajes de programación, la persistencia se puede configurar al declarar el exchange.
Persistencia de Mensajes en RabbitMQ
Al publicar un mensaje, puedes configurar si el mensaje debe ser persistente a través de las propiedades del mensaje.
Consejo: La persistencia de la cola no implica que el mensaje sea automáticamente persistente.
En Golang, los mensajes se publican de la siguiente manera:
err = ch.Publish(
"tizi365", // exchange
"", // clave de enrutamiento
false,
false,
amqp.Publishing{
DeliveryMode:2, // modo de entrega del mensaje, 1 para no persistente, 2 para persistente
ContentType: "text/plain",
Body: []byte(body),
})