पहले, कतारों अक्सर वास्तविक DB टेबल द्वारा समर्थन कर रहे हैं और संदेश स्थायित्व बनाए रख सकते हैं की जरूरत है। उस तरफ, कतार एक ऐसे काम को दूर करने का एक स्वाभाविक तरीका है जिसे अतुल्यकालिक रूप से किया जाना चाहिए, यदि आप शुरुआत से उस प्रिंसिपल पर डिज़ाइन करना बहुत शक्तिशाली है।
इस तथ्य के अलावा कि एक तालिका (इकाई) में हार्ड कॉलम (विशेषताओं) का एक सेट होता है, यह तालिका दोनों रिकॉर्डिंग के सेट के साथ-साथ कतार के सेट से बना है, जो सामानों की सूचियों से अधिक कुछ नहीं है आप नियोजित कर रहे हैं एक औपचारिक कतार के रूप में कतार के रूप में, बस आप इसे नियमित (क्रॉन) आधार पर मतदान कर रहे हैं।
एमक्यू आमतौर पर संदेश तक पहुंच को सिंक्रनाइज़ करने के बावजूद एक और निफ्टी सुविधा जोड़ते हैं (आप अगली चीज़ प्राप्त करने के लिए अपने एसक्यूएल में ऐसा कर सकते हैं या नहीं कर सकते हैं)।
मैं क्रॉन/टेबल तंत्र को पोल-आधारित और एमक्यू को ईवेन्ट-आधारित के रूप में मानना पसंद करता हूं।
मेरी राय में एक कतार के लाभ यह है कि यह सिंकिंग, स्टेटस अपडेटिंग का ख्याल रखता है। एमक्यू को "प्रसारण" (विषय) तक स्थापित किया जा सकता है या उपभोक्ताओं या श्रोताओं के समूह को संदेश उपलब्ध कराया जा सकता है।
एमक्यू हालांकि एसिंक्रोनस आपके क्रॉन विंडो के बीच काम करेगा। आप कैसे जानते हैं कि अगली क्रॉन नौकरी चलाने से पहले आपके टेबल में संसाधित संदेशों की संख्या को पूरा किया जा सकता है और पिछली नौकरी पर कदम उठाने का प्रयास करता है?
एमक्यू के लिए कई उपभोक्ता आपको फिट होने पर काम को स्केल करने की अनुमति देते हैं। उपर्युक्त उदाहरण में यदि आपने देखा कि आपका load average
(ओएस 'प्रक्रिया कतार में वही है) आपके जैसा से बड़ा है, तो आप मेट्रिक्स मांग के रूप में इसे चालू और ऑफ़लाइन लाने के लिए एक और उपभोक्ता को उस भार को संभालने के लिए प्रावधान कर सकते हैं।
संदेश प्राथमिकता और प्रदर्शन जैसे कुछ परिचालन मानकों (कुछ कतार स्मृति में रह सकते हैं, अन्य डिस्क में बने रह सकते हैं) के लिए एमक्यू स्थापित किए जा सकते हैं।
डाउनसाइड वह है (जैसा कि पहले से ही उल्लेख किया गया है) कि कतार कभी-कभी पूछताछ करने के लिए कठिन हो सकती है और जिसके लिए मीट्रिक प्राप्त करना पड़ सकता है। मुझे हमेशा एमक्यू सिस्टम मिलते हैं जिनमें डीबी बैकिंग स्टोर होता है ताकि मैं स्वयं को एसक्यूएल के साथ कतार देख सकूं।
हाय, मैं समझता हूं कि, लेकिन आप एक टेबल/क्रॉन के साथ एक ही चीज़ नहीं कर सकते, डीबी से दूरस्थ रूप से कनेक्ट हो सकते हैं और क्रॉन को दूसरी मशीन पर चला सकते हैं? – Bowen
आप निश्चित रूप से कर सकते हैं लेकिन फिर यह एक और "युग्मित समाधान" प्रतीत होता है। एक संदेश कतार दृष्टिकोण WITH, आप नोड कार्यान्वयन के लिए अधिक decoupled हैं। यह एक अच्छी बात हो सकती है। – jldupont
युग्मित बीक्यूज यह प्रारूप वाई के साथ डेटाबेस एक्स का उपयोग करता है, या क्योंकि यह प्रारूप बी के साथ कतार का उपयोग करता है? अच्छा सवाल @bowen। – graffic