एक टिकाऊ कतार और इसकी बाइंडिंग रखने का सबसे अच्छा तरीका क्या है लेकिन इसके उपभोक्ताओं को निलंबित कर दिया गया है?खरगोश एमक्यू कतार खपत को निलंबित
उपयोग का मामला है: मैं इसे "क्रैश होने दें" और संदेशों को संभालना बंद करना चाहता हूं अगर हम उन संदेशों का समूह प्राप्त करते रहें जिन्हें हम सौदा नहीं कर सकते हैं (जैसे डेटाबेस डाउन या स्कीमा मुद्दा है) लेकिन चाहेंगे कतार में एकत्रित रहो। यह प्रकाशित करने की अनुमति है लेकिन उपभोग निलंबित है।
मैं तीन समाधान के बारे में सोच सकते हैं:
- मैं सभी उपभोक्ताओं कतार करने के लिए बाध्य हो सकता था लगातार संदेश अस्वीकृत कर दिए और फिर से कतार लेकिन यह मैं प्रोग्राम के रूप में करना है का उल्लेख नहीं अपशिष्ट संसाधनों की तरह है तर्क से ऊपर
- मैं सभी उपभोक्ताओं पर
basic.cancelConsumer
कह सकते हैं (नीचे देखें) - या में spring-amqp के मामले मुझे लगता है मैं सभी SimpleMessageListenerContainers कि कतार में बंधे हुए हैं पर
shutdown
कह सकते हैं।
#1
हम पहले ही कर रहे हैं क्योंकि संदेशों को खारिज कर दिया जा रहा है। समस्या यह है कि अंतहीन होने की तरह यह अंतहीन हो रहा है जबकि विफलता के लूप और यदि आपके लॉगिंग में विफलता है तो और भी संसाधन बर्बाद हो जाते हैं।
#3
आदर्श लगता है लेकिन मुझे कुछ संदेश श्रोताओं के बारे में कुछ पता होना चाहिए और फिर उन्हें बंद करने के लिए सूचित करें। मुझे लगता है कि मैं एक प्रशंसा विनिमय का उपयोग यह सूचित करने के लिए कर सकता हूं कि कतार को निलंबित करने की आवश्यकता है। मुझे लगता है कि इस तर्क के लिए RabbitMQ में कुछ अंतर्निहित होना चाहिए। दूसरा मुद्दा यह है कि आप एक संदेश कंटेनर में एकाधिक कतारों को बांध सकते हैं (सभी कतारों को निलंबित करने की आवश्यकता नहीं हो सकती है)।
#2
के लिए मैं जानता हूँ कि मैं यह कर सकते हैं के साथ cancel the consumer अपने consumerTag
लेकिन सवाल (यह सोचते हैं कि इसके बाद के संस्करण करने के लिए सही तरीका है) है, जहां मैं एक कतार में consumerTag
रों की सूची मिलता है?
धन्यवाद। मुझे पता है कि उपरोक्त की तरह खरगोश में कतार कैसे घोषित करें।ऐसा लगता है कि मुझे अपने उपभोक्ताओं को अपने आप प्रबंधित करना होगा, जिस मार्ग से मैं पहले से नीचे जा रहा हूं। यह अच्छा होगा अगर खरगोश के पास कतार की खपत को निलंबित करने का विकल्प होता है। –
एकमात्र चीज जो आप किसी कनेक्शन से कर सकते हैं वह इसे व्यवस्थापक से बंद करने के लिए मजबूर करना है जो वास्तव में आप जो खोज रहे हैं –