هناك طريقتان لتعيين وقت انتهاء الرسالة (TTL) لـ RabbitMQ:
- تعيين خصائص الطابور، حيث تكون لجميع الرسائل في الطابور نفس فترة الانتهاء.
- تعيين وقت انتهاء كل رسالة على حدة، مما يسمح بفترة انتهاء مختلفة لكل رسالة. إذا تم استخدام كلتا الطريقتين معًا، سيكون وقت انتهاء الرسالة هو القيمة الأصغر بينهما.
نصيحة: بالنسبة للطريقة الأولى لتعيين خصائص الطابور، فبمجرد انتهاء الرسالة، سيتم إزالتها من الطابور. بالنسبة للطريقة الثانية، حتى إذا انتهت الرسالة، فإنها لن تُحذف مباشرةً من الطابور لأن انتهاء كل رسالة يتم فحصه قبل تسليمها للمستهلكين.
أدناه يوجد استعراض لكيفية تعيين هذا باستخدام جو لغة البرمجة، مماثلة لباقي لغات البرمجة.
تعيين TTL للطابور
تعيين وقت انتهاء الرسالة من خلال خصائص الطابور (x-message-ttl).
// خصائص الطابور
props := make(map[string]interface{})
// وقت انتهاء الرسالة هو 60 ثانية
props["x-message-ttl"] = 60000
q, err := ch.QueueDeclare(
"tizi365.ttl.hello", // اسم الطابور
true, // ما إذا كان يجب الاحتفاظ بالطابور
false,
false,
false,
props, // تعيين خصائص الطابور
)
تعيين TTL للرسالة
تعيين وقت انتهاء الرسالة من خلال خصائص الرسالة
err = ch.Publish(
"tizi365", // اسم التبادل
"", // مفتاح التوجيه
false,
false,
amqp.Publishing{
Expiration: "30000", // وقت الانتهاء هو 30 ثانية
ContentType: "text/plain",
Body: []byte(body),
})