RabbitMQ کو عام طور پر دیر بعد بھیجی گئی پیغامات کا نیٹیو پارسلہ نہیں ہے۔ حالیہ منصوبوں میں بڑی حد تک استعمال کی جانے والی میں مردہ خطا تبادلہ + پیغام TTL نظام یا ریبٹ ایم کیو آرٹ دیر بعد پیغام تبادلے پلگ ان شامل ہیں۔

دیر بعد کے قیامت کے استعمال کے مواقع

  • منصوبوں جہاں پیغام کے پیداوار اور استعمال کے لئے وقت کی شرائط ہوں۔ مثال کے طور پر، ای-کامرس معاملات میں ایسی صورتحال ہوتی ہیں جہاں آرڈر بنائے جانے کے بعد اگر ادائیگی کا مکمل نہیں ہوا تو سوف اور ٹائم آؤٹ میں بند کردیے جاتے ہیں۔ اس صورتحال میں، ایک دیر بعد کا پیغام بنایا جاتا ہے جب آرڈر بنایا جاتا ہے۔ یہ پیغام وقت کے بعد ہی کنسیومر کو پہنچایا جائے گا اور کنسیومر کو چیک کرنا ہوگا کہ متعلقہ آرڈر ادا کر دیا گیا ہے یا نہیں۔ اگر ادائیگی مکمل نہیں ہوتی ہے تو آرڈر بند ہوجائے گا؛ اگر ادائیگی مکمل ہوتی ہے تو پیغام نظرانداز کر دیا جاتا ہے۔
  • منصوبوں جہاں پیغامات جذب کرتے ہیں کی طرف سے دیر بعد کے کام۔ مثال کے طور پر، مخصوص وقت کے بعد صارفین کو یاد دہانی پیغامات بھیجنا۔

مردہ خطا تبادلہ + پیغام TTL نظام

اس ترتیب کا اصل تصور ہے کہ بغیر کنسیومرز کے ایک قیمت کی بنیاد پر قیمت غائب کی ایک قیمت بنائیں اور وقت ختم ہونے پر پیغام کی میعاد ختم ہوجاتی ہے۔ یہ مردہ پیغام بن جاتا ہے، جو کے ایک مردہ خطا تبادلہ کی طرف راستے سے بھیجا جاتا ہے، پھر مردہ پیغام قطار کی طرف راستے سے بھیجا جاتا ہے، جو کہ استعمال کیا جاسکتا ہے۔

اس ترتیب کو ٹھیک کرنے کے لئے، خصوصیتوں کو مندرجہ ذیل دو ہدایتوں کے مطابق سیٹ کیا جانا چاہیے:

دیر بعد پیغام پلگ ان حل

1. پلگ ان نصب کرنا

ریبٹ ایم کیو آرٹ دیر بعد پیغام تبادلہ گیت ہب ریپازٹری:

https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases

ریلیز پیج پر موجودی کی سکشکتاز سیکشن سے rabbitmq_delayed_message_exchange-3.8.9-0199d11c.ez فائل ڈاؤن لوڈ کریں اور فائل رابٹ ایم کیو آرٹ پلگ ان ڈائریکٹری (پلگ ان ڈائریکٹری) میں رکھیں۔

نوٹ: ورژن نمبر مختلف ہوسکتا ہے اس ہیدایت پر۔ اگر آپ کا ریبٹ ایم کیو آرٹ خراب ہوجائے تو پلگ ان کی تازہ ترین ورژن تازہ ترین ورژن کا انتخاب کر لیں۔

2. پلگ ان کا فعال کرنا

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

3. تبادلہ کا تعین کرنا

دئیہ نصابی خاصیتیں استعمال کرتے ہوئے x-delayed-type کی تعمیل کرنے کیلئے ایک سفارش تعین کرنا۔

پراپرٹس := make(map[string]interface{})
// دیر بعد پیغامات بھیجنے کا پارامیٹر
پراپرٹس["x-delayed-type"] = "متعین کریں"

// تبادلہ کا تعین کریں
غلط = ch.ExchangeDeclare(
"دیر بعد قطار", // تبادلہ کا نام
"فینات",      // ایکسچینج کی قسم
سچ,          // دیرپاؤنڈ
غلط,
غلط,
غلط,
پراپرٹس,         // خصوصیات سیٹ
)

4. دیر بعد پیغامات بھیجنا

پیغام کے سرخیوں (x-delay) کا استعمال کرکے پیغام کا دیر بعد وقت تعین ہوتا ہے۔

msgHeaders := make(map[string]interface{})
// میسیج کے سرخیوں کا استعمال کرکے پیغام کا دیر بعد وقت تعین ہوتا ہے، ملی سیکنڈ میں
msgHeaders["x-delay"] = 6000

غلط = ch.Publish(
"دیر بعد قطار", // تبادلہ کا نام
"",            // راستہ پارامیٹر
غلط,
غلط,
amqp.Publishing{
Headers: msgHeaders,   // میسیج کے سرخیوں کو سیٹ کریں
ContentType: "ٹیکسٹ/plain",
Body: []byte(body),
})

نوٹ: اگر آپ عوامی کلاؤڈ کا ریبٹ ایم کیو آرٹ سروس استعمال کر رہے ہیں تو آپ پلگ ان نصاب سے بغیر مواد کے وقت کا تعین کرسکتے ہیں، پیغام سرخیوں خصوصیت (وقفہ) کا استعمال کرتے ہوئے۔ الی بابا کلاء نے پہلے ہی ریبٹ ایم کیو آرٹ کو یہ مواصلت کے لئے بڑھا دیا ہے۔