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