मैं एक अजीब मुद्दे के बारे में मदद की तलाश में हूं जहां एक कतार में धीमी उपभोक्ता अन्य सभी उपभोक्ताओं को उसी कतार पर 30 सेकंड अंतराल पर संदेश लेने शुरू करने का कारण बनता है। यह सब उपभोक्ता है लेकिन धीमी गति से उपभोक्ता संदेश जितना तेज़ नहीं हो सकता है, इसके बजाय वे उपभोग करने से पहले कुछ जादुई 30s बाधा की प्रतीक्षा करते हैं।एक धीमी ActiveMQ उपभोक्ता अन्य उपभोक्ताओं को धीमा होने के कारण
अपने आवेदन के बुनियादी प्रवाह इस प्रकार है:
- एक भी कतार पर उत्पादकों जगह संदेशों की एक संख्या। संदेश अलग JMSXGroupIDs
- उपभोक्ताओं की एक संख्या है कि एक कतार मानक अभ्यास के रूप में
- JMSXGroupIDs कुछ बिंदु उपभोक्ताओं में से एक धीमी हो जाती है और संदेश संसाधित नहीं कर सकता पर उपभोक्ताओं
- भर में वितरित पर संदेशों को सुन हो सकता है बहुत जल्दी
- धीमी गति से उपभोक्ता दलाल पर इसके प्रीफ़ेच बफर भरने समाप्त होता है और AMQ स्वीकार करता है कि यह (डिफ़ॉल्ट व्यवहार) उस बिंदु पर
- धीमी है - या कुछ 'यादृच्छिक' लेकिन पास समय बाद - धीमी छोड़कर सभी उपभोक्ताओं एक ही 30 के अंतराल पर संदेशों का उपभोग करने के लिए शुरू होता है
- यदि धीमी गति से उपभोक्ता हो जाता है तेजी से फिर से फिर बातें बहुत जल्दी सामान्य ऑपरेशन करने के लिए वापस और 30 बाधा कृपया दूर
मैं क्या इस मुद्दे का कारण हो सकता के लिए एक नुकसान में हूँ, या यह कैसे तय करने के लिए, चला जाता है मदद।
अधिक पृष्ठभूमि और निष्कर्ष
- मैं, मज़बूती से AMQ 5.8.0, 5.9.0 (जहां इस मुद्दे को मूल रूप से देखा गया था) और 5.9.1 पर इस समस्या का पुन: पेश करने प्रबंधित किया है ताजा इंस्टॉल पर और मौजूदा ओप-प्रबंधित इंस्टॉल और विभिन्न मशीनों पर कुछ वीएम और कुछ नहीं। सभी लिनक्स इंस्टॉल, विभिन्न ओएस और जावा संस्करण।
- यह किसी भी prefetch से संबंधित प्रभावित नहीं होता है, यह है: prefetch मान को 1 से 10 से 1000 तक बदलना इस समस्या को
- [लाल हेरिंग?] पर डीबग लॉग सक्षम करना बंद नहीं करता है एमएमएसी उदाहरण उन संदेशों के आवधिक चेक से संबंधित लॉग दिखाता है जिन्हें समाप्त किया जा सकता है। कतार में कोई समाप्ति नीति नहीं है, इसलिए मैं केवल यह सोच सकता हूं कि निर्धारित
expireMessagesPeriod
समय बस इस तरह से बढ़ रहा है कि यह गैर धीमी उपभोक्ताओं को संदेश भेजता है। - यदि 30s मोड दर्ज किया गया है तो बाएं फिर सेकंड में प्रवेश किया जाता है-पिछले-मिनट का समय हमेशा समान होता है, उदाहरण के लिए मिनट के 14 और 44 के दशक में। यह सभी उपभोक्ताओं और उन उपभोक्ताओं को होस्ट करने वाली सभी मशीनों में सच है। उन अवरोध बिंदु amq के पुनरारंभ के बाद बदलते हैं।
एक इकाई परीक्षण बनाएँ और ActiveMQ –
ठीक के साथ समस्या क्या करेंगे के लिए एक Jira खोलें। मुझे लगता है कि यह तब व्यवहार की उम्मीद नहीं है? – Matt
https://issues.apache.org/jira/browse/AMQ-5200 - इस मामले को इस सटीक मामले को कवर करने के लिए बनाया गया है (यानी समूह के चयनकर्ताओं का उपयोग नहीं) यदि इसे वैकल्पिक मामले को ठीक करने से अधिक महत्वपूर्ण समझा जाता है – Matt