RabbitMQ'da ileti (TTL) süresini belirlemenin iki yolu vardır:
- Kuyruk özellikleriyle belirleme, burada kuyruktaki tüm iletilerin aynı süresi vardır.
- Her ileti için ayrı ayrı süre belirleme, her ileti için farklı TTL izin verir. Bu iki yöntem birlikte kullanıldığında, ileti TTL'si iki yöntemin küçük olan değeri olacaktır.
İpucu: Kuyruk özelliklerinin ilk yöntemiyle, ileti süresi dolduğunda kuyruktan kaldırılır. İkinci yöntemde ise ileti süresi dolduğunda bile, ileti hemen kuyruktan silinmez çünkü her ileti teslimat öncesinde tüketicilere gönderilmeden önce süresi kontrol edilir.
Aşağıda, Golang kullanarak bunu nasıl ayarlayacağınızın bir gösterimi bulunmaktadır, diğer programlama dillerine benzer şekilde.
Kuyruk TTL Ayarı
Kuyruk özellikleriyle ileti süresini belirleme (x-message-ttl).
// Kuyruk özellikleri
props := make(map[string]interface{})
// İleti süresi 60 saniyedir
props["x-message-ttl"] = 60000
q, err := ch.QueueDeclare(
"tizi365.ttl.hello", // Kuyruk adı
true, // Kuyruğu kalıcı hale getir
false,
false,
false,
props, // Kuyruk özelliklerini ayarla
)
İleti TTL Ayarı
İleti özellikleri aracılığıyla ileti süresini belirleme
err = ch.Publish(
"tizi365", // Değişim adı
"", // Yönlendirme anahtarı
false,
false,
amqp.Publishing{
Expiration: "30000", // Süre 30 saniyedir
ContentType: "text/plain",
Body: []byte(body),
})