2012-09-07 15 views
19

अब तक, कोई भी (भी नहीं GAE दस्तावेज़) मुझे क्या फर्क एक धक्का कतार और एक पुल कतार के बीच है की एक बहुत स्पष्ट विवरण देने में सक्षम किया गया है ।पुश बनाम Google अनुप्रयोग इंजन पर पुल कतार

मेरा समझ यह है कि कार्य कतार API आपको कार्य कतारों को परिभाषित करने की अनुमति देता है जहां कार्य को घेर लिया जा सकता है। किसी भी तरह, यह जीएई की ऑटो-स्केलिंग सुविधा के साथ काम करता है ताकि आपको इन कतारों से कार्य करने वाले कार्यकर्ता थ्रेड की संख्या को स्पष्ट रूप से प्रबंधित करने की आवश्यकता न हो: GAE बस आपके लिए यह करता है।

लेकिन कहीं भी मुझे पुश और पुल कतारों के बीच अंतर का "किंग्स इंग्लिश" विवरण नहीं मिल सकता है। एक "पुश कतार" धक्का क्या है? खींचने वाली "पुल कतार" क्या है? क्या वे दोनों queues.xml के अंदर कॉन्फ़िगर किए गए हैं?

उत्तर

24

पुल कतार में आप कतार में कार्य संलग्न करते हैं और आपके कोड को खींचने की आवश्यकता होती है, आप उन्हें कतार से कार्यों को पट्टे और कार्यों को हटाकर खींचते हैं। यदि आप कार्यों को हटा नहीं देते हैं और लीज समय समाप्त हो जाता है तो सिस्टम कार्य को कतार में वापस कर देगा।

आप एक से अधिक कार्य इकाइयों को एकत्रित करने के लिए पुल कतार (उदाहरण के लिए) का उपयोग कर सकते हैं जिन्हें एक साथ संसाधित किया जा सकता है। एक और उदाहरण: क्यूइंग कार्य जो कार्य को संसाधित करने के लिए बाहरी मशीन (जैसे EC2 या gCompute) द्वारा खींचा जाएगा, ताकि ऐपइंजिन नहीं कर सके।

पुश कतार आप कतार में कार्यों को घेरते हैं लेकिन ऐपइंजिन उन्हें हटा देगा और उन्हें कार्य द्वारा निर्दिष्ट हैंडलर पर चलाएगा। आप कार्य प्रसंस्करण दर को नियंत्रित कर सकते हैं, कार्य निष्पादन विफलताओं को कैसे नियंत्रित करें और AppEngine यह तय करेगा कि प्रसंस्करण के लिए कितने उदाहरण (धागे) का उपयोग करना है।

+1

अहह धन्यवाद @Shay Erlichmen (+1) - संक्षेप में: एक "खींचें" कतार के लिए आपको मैन्युअल रूप से अपने कोड में कार्यों को स्पष्ट रूप से हटाने और संसाधित करने की आवश्यकता होती है; जबकि "पुश" कतार के साथ आप केवल एक हैंडलर और कॉन्फ़िगर निर्दिष्ट करते हैं और जीएई बाकी की देखभाल करता है। क्या यह एक उचित मूल्यांकन है? इसके अलावा, कुछ अनुवर्ती: (1) क्या 'queues.xml' केवल पुश कतारों पर लागू होता है? (2) मुझे लगता है कि टास्क कतार एपीआई में पुल कतार से कार्य को स्पष्ट रूप से हटाने/हटाने के लिए कोड है, हां? एक बार फिर धन्यवाद! – IAmYourFaja

+1

@pnongrata आपका सारांश सही है, और (1) नहीं, आप queues.xml में पुल कतारों को भी परिभाषित करते हैं, यदि कतार xml में नहीं है तो यह मौजूद नहीं है। और (2) हां, lease_queue (डेक्यू) और delete_tasks के लिए देखो। –

संबंधित मुद्दे