में मल्टीथ्रेडेड जेएमएस प्राप्त हो रहा है मैं एक कतार से जेएमएस संदेश प्रसंस्करण के लिए एक बहुप्रचारित कार्यान्वयन लिखने की कोशिश कर रहा हूं।वसंत
मैंने डिफॉल्ट मैसेज लिस्टनर कंटैनर और सरल मैसेज लिस्टरनर कंटेनर कक्षाओं के साथ प्रयास किया है।
मेरी समस्या यह है कि ऐसा लगता है कि संदेश लिस्टनर वर्ग का केवल एक ही उदाहरण तत्काल हो जाता है, इससे कोई फर्क नहीं पड़ता कि मैं इसे कैसे कॉन्फ़िगर करता हूं। यह मुझे अनावश्यक रूप से स्टेटलेस या थ्रेड-सुरक्षित संदेश लिस्टर कार्यान्वयन लिखने के लिए मजबूर करता है, क्योंकि मेरे पास ListenerContainer एकाधिक थ्रेड (concurrentConsumers = 8) का उपयोग करने के लिए कॉन्फ़िगर किया गया है।
क्या इसका कोई स्पष्ट समाधान है कि मैं अनदेखा कर रहा हूं?
मुझे समझ में नहीं आता है। मैं अपना संदेश लिस्टर बना रहा हूं। मैं बस समानांतर में चीजों को संसाधित करने के लिए अपने मशीन के बहु-कोर का लाभ उठाना चाहता हूं। –
@Iker: हां, और MessageListenerContainer ऐसा करने के लिए कई धागे उत्पन्न करेगा, सभी थ्रेड आपके 'MessageListener' के समान उदाहरण का उपयोग करते हुए। कई श्रोताओं को पैदा करना अक्षम और अनावश्यक है। – skaffman
ठीक है, मैं समझता हूं। लेकिन आइए कहें कि प्रत्येक जेएमएस संदेश के लिए आपको नौकरी को संसाधित करना होगा जिसमें कुछ सेकंड लगते हैं। मैं प्रत्येक संदेश को संसाधित करने के लिए उदाहरणों का एक पूरी तरह से अलग सेट का उपयोग करने में सक्षम होना चाहता हूं। क्या मुझे संदेश लिस्टनर से थ्रेड फेंकना चाहिए? –