पाठ 9 / 32
मैसेज क्यू
Message queues से producers को consumers से अलग करें, और idempotent consumers व dead-letter queues design करें।
क्यू क्यों
क्यू (Kafka, SQS, RabbitMQ) तेज़ प्रोड्यूसर को काम सौंपकर आगे बढ़ने देता है। कंज़्यूमर अपनी गति से प्रोसेस करते हैं, स्पाइक सोखते हैं और रीस्टार्ट झेलते हैं।
डिलीवरी गारंटी
अधिकांश क्यू एट-लीस्ट-वन्स डिलीवरी देते हैं, इसलिए कंज़्यूमर आइडेम्पोटेंट होने चाहिए — एक ही संदेश दो बार प्रोसेस करना सुरक्षित हो।
डेड-लेटर क्यू जोड़ें
बार-बार विफल संदेश पाइपलाइन रोकने के बजाय DLQ में जाते हैं। आप उन्हें बाद में जाँचते और रीप्ले करते हैं।
त्वरित जाँच: एट-लीस्ट-वन्स क्यू के कंज़्यूमर आइडेम्पोटेंट क्यों होने चाहिए?
- संदेश क्रम से बाहर आ सकते हैं
- एक ही संदेश एक से अधिक बार आ सकता है
- संदेश खो सकते हैं
- Queues हमेशा messages को size के अनुसार reorder करते हैं
Answer
एक ही संदेश एक से अधिक बार आ सकता है — रिट्राई और रीडिलीवरी से डुप्लिकेट आते हैं; आइडेम्पोटेंट हैंडलिंग उन्हें हानिरहित बनाती है।