RabbitMQ'da ileti (TTL) süresini belirlemenin iki yolu vardır:

  1. Kuyruk özellikleriyle belirleme, burada kuyruktaki tüm iletilerin aynı süresi vardır.
  2. 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),
		})