الطوابير ذات الأولوية، كما يوحي الاسم، تمنح الأولوية لرسائل الأولوية العالية لتكون مستهلكة أولاً.
نقاط يجب ملاحظتها بشأن طوابير الأولوية في RabbitMQ:
- تأخذ طوابير الأولوية تأثيرًا فقط عندما يكون هناك مستهلكون غير كافين ولا يمكن القيام بالاستهلاك في الوقت المناسب.
- تتم دعم طوابير الأولوية فقط بعد إصدار RabbitMQ الإصدار 3.5.
خطوات استخدام طوابير الأولوية في RabbitMQ
- تعيين أقصى أولوية للطابور.
- تعيين أولوية الرسالة.
تعيين الأقصى لأولوية الطابور
عند إعلان الطابور، يتم تحديد الأقصى لأولوية الطابور من خلال خاصية الطابور (x-max-priority). القيمة القصوى للأولوية هي 255، ومن المستحسن تحديدها بين 1 و 10. التعيين في Golang:
// خصائص الطابور
props := make(map[string]interface{})
// تعيين الأقصى لأولوية الطابور
props["x-max-priority"] = 10
// إعلان الطابور
q, err := ch.QueueDeclare(
"tizi365.hello", // اسم الطابور
true, // الطابور قابل للتحمل
false, // حذف عندما لا يتم استخدامه
false, // حصري
false, // بدون انتظار
props, // تعيين خصائص الطابور
)
نصيحة: طريقة الضبط في لغات أخرى مماثلة.
تعيين أولوية الرسالة
التعيين في Golang:
err = ch.Publish(
"tizi365", // التبادل
"", // مفتاح التوجيه
false,
false,
amqp.Publishing{
Priority:5, // تعيين أولوية الرسالة
DeliveryMode:2, // طريقة تسليم الرسالة، 1 لغير مستمر، 2 لمستمر
ContentType: "text/plain",
Body: []byte(body),
})