RabbitMQ'nun kalıcılık mekanizması, kuyruk kalıcılığı, mesaj kalıcılığı ve değişim kalıcılığını içerir. Mesajın kalıcı olup olmadığına bakılmaksızın, disk'e yazılabilir.

Kalıcı mesajlar hem diske hem de belleğe yazılır (okumayı hızlandırmak için), kalıcı olmayan mesajlar ise bellek yetersiz olduğunda diske yazılır (RabbitMQ yeniden başlatıldıktan sonra kaybolurlar).

RabbitMQ Kuyruk Kalıcılığı

Kuyruk bildirilirken, kuyruğun kalıcı olup olmadığı ayarlanabilir. Golang'da kuyruk şu şekilde bildirilir:

q, err := ch.QueueDeclare(
  "hello", // kuyruk adı
  true,   // kuyruğun kalıcı olup olmadığı
  false,
  false,
  false,
  nil,
)

İpucu: Diğer programlama dillerine benzer şekilde, kuyruk bildirilirken ayarlanabilir.

RabbitMQ Değişim Kalıcılığı

Değişim bildirilirken, özellikler kullanılarak değişimin kalıcı olup olmadığı ayarlanabilir. Golang'da şu şekilde bildirilir:

err = ch.ExchangeDeclare(
        "tizi365",   // değişim adı
        "fanout", // değişim türü
        true,     // kalıcı olup olmadığı
        false,    
        false,   
        false, 
        nil, 
    )

İpucu: Diğer programlama dillerine benzer şekilde, değişim bildirilirken kalıcılık ayarlanabilir.

RabbitMQ Mesaj Kalıcılığı

Mesaj gönderirken, mesajın kalıcı olup olmadığı mesaj özellikleri aracılığıyla ayarlanabilir.

İpucu: Kuyruk kalıcılığı, mesajın otomatik olarak kalıcı olduğu anlamına gelmez.

Golang'da mesajlar şu şekilde yayınlanır:

err = ch.Publish(
			"tizi365",     // değişim
			"", // yönlendirme anahtarı
			false, 
			false,
			amqp.Publishing{
				DeliveryMode:2,  // mesaj teslimat modu, kalıcı olmayan için 1, kalıcı için 2
				ContentType: "text/plain",
				Body:        []byte(body),
			})