distribution - Consumer allocation RabbitMQ -


खरगोश-एमक उपभोक्ता वितरण को डिजाइन करने में सहायता की आवश्यकता है।

उदाहरण के लिए, 100 कतारें हैं और उस 100 कतार से संदेश उपभोग करने के लिए 10 थ्रेड्स प्रत्येक थ्रेड 10 क्यूई से प्रत्येक संदेश का उपभोग करेगा प्रश्न 1: कैसे गतिशील रूप से धागे को कतारों को असाइन करना है? यदि थ्रेड्स विभिन्न मशीनों में चल रहे हैं?

एक से अधिक थ्रेड को कतार से उपभोग नहीं करना चाहिए (संबंधित कतार में संदेश प्रसंस्करण के आदेश को बनाए रखने के लिए) प्रश्न 2: जब वृद्धि की आवश्यकता होती है उपभोक्ता धागे जब सिस्टम चलाता है, तो यह कैसे किया जा सकता है?।

इसके बारे में बहुत सी पोस्ट हैं संदेश ऑर्डर (एफआईएफओ), आपके पास एक सामान्य स्थिति है (एक निर्माता उपभोक्ता समस्या के बिना उपभोक्ता) आपको कोई समस्या नहीं है लेकिन जैसा कि आप पढ़ सकते हैं

विशेष रूप से ध्यान दें कि "जब तक कि पुनर्वित्त क्षेत्र सेट नहीं किया जाता" स्थिति होती है, जिसका अर्थ है कि उपभोक्ताओं द्वारा किसी भी डिस्कनेक्ट के कारण संदेशों को स्वीकृति के बाद लंबित रूप से आदेश से बाहर निकाल दिया जा सकता है।

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

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

P> यह कहने के बाद, अगर हम मानते हैं कि 100 कतारों को एक ही संदेश की तरह संभाल करना है, तो आप थ्रेडपोल एक्सक्लोरर का उपयोग कर सकते हैं और इसे सभी उपभोक्ता से साझा कर सकते हैं उदाहरण के लिए:

  पब्लिक क्लास वास्तविक कंस्यूमर डिफॉल्ट कंसमेरर (सार्वजनिक एक्टिविअल कंस्यूमर (चैनल चैनल) {सुपर (चैनल) को बढ़ाता है; } @ ओवरराइड पब्लिक व्हाइड हेन्ड डेलिवरी (स्ट्रिंग उपभोक्ताटैग, लिफाफा लिफाफा, बेसिक प्रोप्रॉपर्टीज प्रॉपर्टीज, बाइट [] बॉडी) java.io.IOException फेंकता {MyMessage message = new MyMessage (body); MythreadPoolExecutorShared.submit (नया MyHandleMessage (संदेश))}  

}

इस तरह से आप थ्रेड्स के बीच संदेशों को संतुलित कर सकते हैं। इसके अलावा थ्रेडपूल के लिए आप अलग-अलग पॉलिसी का उपयोग कर सकते हैं, उदाहरण के लिए फिक्स्ड थ्रेड नंबर या डायनेमिक थ्रेड अलॉकेशन के साथ एक स्थिर आवंटन।
कृपया इस पोस्ट को थ्रेडपूल आकार के बारे में पढ़ें () आप इस पैटर्न को सभी नोड्स पर लागू कर सकते हैं, प्रेषण संदेशों को संतुलित कर सकते हैं और सही धागा नंबर आवंटित कर सकते हैं।

मुझे आशा है कि यह उपयोगी हो सकता है, मैं और अधिक विस्तृत होना चाहता हूं, लेकिन आपका प्रश्न थोड़ा सामान्य है।


Comments

Popular posts from this blog

import - Python ImportError: No module named wmi -

Editing Python Class in Shell and SQLAlchemy -

c# - MySQL Parameterized Select Query joining tables issue -