2012-08-16 9 views
21

के साथ उपयोग करने के लिए किस प्रकार का कनेक्शन मैं यह पता लगाने की कोशिश कर रहा हूं कि मुझे पिका का उपयोग करते समय किस प्रकार का कनेक्शन उपयोग करना चाहिए, मुझे दो विकल्प मिलते हैं जहां तक ​​मैं समझता हूं।पिका

या तो BlockingConnection या SelectConnection, हालांकि मैं के बीच मतभेदों के बारे में वास्तव में यकीन नहीं है इन दो (यानी है क्या BlockingConnection अवरुद्ध? और अधिक)

pika के लिए दस्तावेज़ का कहना है कि SelectConnection पसंदीदा तरीका है खरगोश से जुड़ने के लिए क्योंकि यह "चयन, एपोल, क्यूक्यू और पोल सहित कई घटना अधिसूचना विधियों को प्रदान करता है।"

तो मुझे आश्चर्य है कि इन दो अलग-अलग प्रकार के कनेक्शन के प्रभाव क्या हैं?

पीएस: मुझे पता है कि मुझे शीर्षक में टैग नहीं डालना चाहिए, लेकिन इस मामले में मुझे लगता है कि यह प्रश्न को स्पष्ट करने में मदद करता है।

उत्तर

11

चयनकनेक्शन उपयोगी है यदि आपके एप्लिकेशन आर्किटेक्चर को एसिंक्रोनस डिज़ाइन से लाभ हो सकता है, उदा। खरगोश एमक्यू आईओ पूरा होने पर कुछ और कर रहा है (उदाहरण के लिए कुछ अन्य आईओ आदि पर स्विच करें)। फ़ंक्शन लौटने पर इंगित करने के लिए इस प्रकार का कनेक्शन कॉलबैक का उपयोग करता है। उदाहरण के लिए आप के लिए

on_connected, on_channel_open कॉलबैक घोषणा कर सकते हैं, on_exchange_declared, on_queue_declared आदि

... जब इन घटनाओं ट्रिगर कर रहे हैं कार्रवाई करने।

लाभ विशेष रूप से अच्छा है यदि आपका RabbitMQ सर्वर (या उस सर्वर से कनेक्शन) धीमा या अधिभारित है।

हाथ पर अवरुद्ध कनेक्शन केवल यह है - जब तक कि फ़ंक्शन रिटर्न नहीं किया जाता है तब तक यह अवरुद्ध होता है। इसलिए यह निष्पादन धागा को तब तक अवरुद्ध करेगा जब तक कनेक्ट या channel_open या exchange_declared या queue_declared उदाहरण के लिए वापसी नहीं होगी। उस ने कहा, एसिंक चयनकनेक्शन तर्क से इस प्रकार के क्रमबद्ध तर्क को प्रोग्राम करना अक्सर आसान होता है। उत्तरदायी RabbitMQ सर्वर के साथ सरल ऐप्स के लिए ये ठीक आईएमओ भी काम करते हैं।

मुझे लगता है कि आपने Pika दस्तावेज़ पहले से ही http://pika.github.com/connecting.html पढ़ा है, यदि नहीं, तो यह पिका का उपयोग करने से पहले यह बिल्कुल महत्वपूर्ण जानकारी है!

चीयर्स!

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

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