2014-06-24 12 views
9

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

मैं कतार को बंद करने के तुरंत बाद संदेश को नहीं खोलना चाहता क्योंकि मैं चाहता हूं कि कोई एक प्राप्त होने पर संदेश की आवश्यकता हो। क्या कोई मुझे मेरी समस्या को हल करने में कोई अंतर्दृष्टि दे सकता है?

उत्तर

7

एक लंबे टाइमआउट होने से ठीक हो सकता है, और निश्चित रूप से के रूप में आप कहते हैं कि तुम पुनर्वितरण चाहते कुछ गलत हो जाता है, तो आप के लिए एक ही पावती के बाद आप समाप्त करना चाहते हैं।

उस प्राप्त करने का सबसे अच्छा तरीका, आईएमओ, कतार पर एकाधिक उपभोक्ता होगा (यानी एक ही कतार से उपभोग करने वाले एकाधिक धागे/प्रक्रियाएं)। यह तब तक ठीक होना चाहिए जब तक आपकी कतार सामग्री पर कोई विशेष आदेश बाधा न हो (यानी अगर कतार में पोस्टग्रेस डेटा का प्रतिनिधित्व करने वाली सामग्री शामिल हो, जिसमें एफके बाधाएं शामिल हों)।

RabbitMQ वेबसाइट पर इस ट्यूटोरियल में अधिक जानकारी प्रदान करता है (अजगर जुड़ा हुआ है, लेकिन वहाँ अन्य भाषाओं के लिए समान ट्यूटोरियल होना चाहिए):

: https://www.rabbitmq.com/tutorials/tutorial-two-python.html

ओपी से टिप्पणी के जवाब में संपादित करें

आपका दिल की धड़कन क्या है? यदि आपका कर्मचारी समय की निर्धारित अवधि के भीतर दिल की धड़कन को स्वीकार नहीं करता है, तो सर्वर कनेक्शन को मृत मानने पर विचार करेगा।

सुनिश्चित नहीं है कि आप किस भाषा का उपयोग कर रहे हैं, लेकिन जावा के लिए आप दिल की धड़कन निर्दिष्ट करने के लिए setRequestedHeartbeat विधि का उपयोग करेंगे।

जिस तरह से आप अपने कर्मचारियों को लागू करते हैं, यह महत्वपूर्ण है कि दिल की धड़कन को अभी भी खरगोश एमक्यू सर्वर पर भेजा जा सके। अगर कुछ ग्राहक को दिल की धड़कन भेजने से रोकता है, तो अंतराल की समयसीमा समाप्त होने के बाद सर्वर कनेक्शन को मार देगा।

+1

टिप के लिए धन्यवाद। मुझे लगता है कि RabbitMQ के साथ संदेश पर उस टाइमआउट कॉन्फ़िगरेशन को कहां सेट करना है। ऐसा लगता है कि अगर मैंने 10 सेकंड के बाद संदेश नहीं देखा है या तो RabbitMQ संदेश को किसी अन्य कार्यकर्ता द्वारा उपभोग करने के लिए कतार में वापस रखता है, जो मैं नहीं चाहता हूं। कोई सुझाव? – Wanged

+0

उत्तर में जोड़ा गया। – khampson

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