O mecanismo de persistência do RabbitMQ inclui persistência de filas, persistência de mensagens e persistência de trocas. Independentemente de a mensagem ser persistente ou não, ela pode ser gravada no disco.

As mensagens persistentes são escritas tanto no disco quanto na memória (para acelerar a leitura), enquanto as mensagens não persistentes são gravadas no disco quando a memória é insuficiente (serão perdidas após o reinício do RabbitMQ).

Persistência de Filas do RabbitMQ

Ao declarar uma fila, é possível definir se a fila precisa ser persistente. Em Golang, a fila é declarada da seguinte forma:

q, err := ch.QueueDeclare(
  "hello", // nome da fila
  true,   // se a fila deve ser persistente
  false,
  false,
  false,
  nil,
)

Dica: Semelhante a outras linguagens de programação, a fila pode ser configurada durante a sua declaração.

Persistência de Trocas do RabbitMQ

Ao declarar uma troca, é possível definir se ela precisa ser persistente usando propriedades. Em Golang, é declarada da seguinte forma:

err = ch.ExchangeDeclare(
        "tizi365",   // nome da troca
        "fanout", // tipo de troca
        true,     // se deve ser persistente
        false,    
        false,   
        false, 
        nil, 
    )

Dica: Semelhante a outras linguagens de programação, a persistência pode ser configurada durante a declaração da troca.

Persistência de Mensagens do RabbitMQ

Ao publicar uma mensagem, é possível definir se a mensagem precisa ser persistente por meio das propriedades da mensagem.

Dica: A persistência da fila não significa que a mensagem é automaticamente persistente.

Em Golang, as mensagens são publicadas da seguinte forma:

err = ch.Publish(
			"tizi365",     // troca
			"", // chave de roteamento
			false, 
			false,
			amqp.Publishing{
				DeliveryMode:2,  // modo de entrega da mensagem, 1 para não persistente, 2 para persistente
				ContentType: "text/plain",
				Body:        []byte(body),
			})