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