الطوابير ذات الأولوية، كما يوحي الاسم، تمنح الأولوية لرسائل الأولوية العالية لتكون مستهلكة أولاً.

نقاط يجب ملاحظتها بشأن طوابير الأولوية في RabbitMQ:

  • تأخذ طوابير الأولوية تأثيرًا فقط عندما يكون هناك مستهلكون غير كافين ولا يمكن القيام بالاستهلاك في الوقت المناسب.
  • تتم دعم طوابير الأولوية فقط بعد إصدار RabbitMQ الإصدار 3.5.

خطوات استخدام طوابير الأولوية في RabbitMQ

  1. تعيين أقصى أولوية للطابور.
  2. تعيين أولوية الرسالة.

تعيين الأقصى لأولوية الطابور

عند إعلان الطابور، يتم تحديد الأقصى لأولوية الطابور من خلال خاصية الطابور (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),
	})