صفوف اولویتدار، همانطور که از نام آن پیداست، اولویت برای پیامهای با اولویت بالاتر برای مصرف اعطا میکنند.
نکاتی که برای صفوف اولویتدار RabbitMQ باید توجه شود:
- صفوف اولویتدار تنها زمانی تأثیرگذار هستند که مصرفکنندگان کافی وجود نداشته باشند و مصرف به موقع انجام نشود.
- صفوف اولویتدار تنها پس از نسخه ۳.۵ RabbitMQ پشتیبانی میشوند.
گامها برای استفاده از صفوف اولویتدار RabbitMQ
۱. تعیین حداکثر اولویت صف. ۲. تعیین اولویت پیام.
تعیین حداکثر اولویت صف
هنگام اعلام صف، از طریق ویژگی صف (x-max-priority) حداکثر اولویت صف را تعیین کنید. حداکثر مقدار برای اولویت ۲۵۵ است و توصیه میشود آن را بین ۱ و ۱۰ تنظیم کنید. تنظیم در گولانگ:
// خصوصیات صف
props := make(map[string]interface{})
// تعیین حداکثر اولویت صف
props["x-max-priority"] = 10
// اعلام صف
q, err := ch.QueueDeclare(
"tizi365.hello", // نام صف
true, // صف دائمی
false, // حذف هنگام عدم استفاده
false, // انحصاری
false, // بدون انتظار
props, // تنظیم خصوصیات صف
)
نکته: روش تنظیم در زبانهای دیگر نیز مشابه است.
تعیین اولویت پیام
تنظیم در گولانگ:
err = ch.Publish(
"tizi365", // تبادل
"", // کلید مسیریابی
false,
false,
amqp.Publishing{
Priority:5, // تنظیم اولویت پیام
DeliveryMode:2, // حالت تحویل پیام، ۱ برای غیرپایدار، ۲ برای پایدار
ContentType: "text/plain",
Body: []byte(body),
})