2015-10-27 2 views
13

मैं सॉकजेएस के साथ स्प्रिंग-वेबसाइटॉक 4.2 का उपयोग कर रहा हूं।वसंत-वेबसाइटों में सॉकजेएस के साथ आंशिक संदेश 4.2

चूंकि ग्राहकों द्वारा प्राप्त किए गए संदेश काफी बड़े हो सकते हैं, इसलिए मैं आंशिक संदेश का उपयोग करना चाहता हूं। TextWebSocketHandler का मेरा सबक्लास सत्य को वापस करने के लिए पार्टिकल मैसेज का समर्थन करता है। हालांकि, चूंकि स्प्रिंग द्वारा बनाई गई सॉकजेस वेबस्केट हैंडलर आंशिक संदेशों का समर्थन नहीं करती है, इसलिए मुझे अभी भी code=1009, reason=The decoded text message was too big for the output buffer and the endpoint does not support partial messages त्रुटि मिलती है।

कामकाज के रूप में, मैंने here वर्णित बफर आकार को 1 एमबी तक बढ़ा दिया है, लेकिन चूंकि मुझे बड़ी संख्या में ग्राहकों (~ 2000 को एक ही समय में) का समर्थन करना है, इसके लिए बहुत अधिक मेमोरी की आवश्यकता है।

क्या सॉकजेएस के साथ आंशिक संदेश का उपयोग करने का कोई तरीका है?

+0

क्या आप इसे हल करने में सक्षम थे। मुझे भी एक ही समस्या का सामना करना पड़ रहा है और समाधान का पता लगाने में सक्षम नहीं है? इसके अलावा 'कंटेनर.सेटमैक्सटेक्स्ट मैसेजबफर आकार (16384) 'में उल्लिखित संख्याएं, क्या यह बिट्स, बाइट्स केबीएस या क्या है? – BiJ

+0

नहीं, दुर्भाग्य से नहीं। हमने प्रेषक पर छेड़छाड़ करके और रिसीवर पर फिर से इकट्ठा करके आंशिक संदेश को कार्यान्वित करना समाप्त कर दिया। setMaxTextMessageBufferSize बाइट्स AFAIK में है। – Jan

+0

क्या आप संदेशों को विभाजित करने के लिए एक चिपचिपा सत्र-जैसे लोड बैलेंसर का उपयोग कर सकते हैं? यह लगभग लगता है कि आपको एक प्रतिक्रियाशील धारा को लागू करने की आवश्यकता है या अपने संदेशों को संभालने के लिए नियमित सॉकेट के बाहर एक उचित स्केल आउट मैसेजिंग कतार का उपयोग करना आवश्यक है। –

उत्तर

0

आप जो करने की कोशिश कर रहे हैं उसे देखते हुए, आप अनिवार्य रूप से अपने समवर्ती संदेशों के लिए रैम में 2 जीबी (1 एमबी मानते हैं) को बफर कर रहे हैं। आपको अपने बुनियादी ढांचे को बदलने, लंबवत पैमाने पर या अपनी संदेश धाराओं को संपीड़ित करने की आवश्यकता है। यदि संदेशों को संपीड़ित करना या लंबवत स्केलिंग प्रश्न से बाहर है, तो मुझे लगता है कि सबसे अच्छा तरीका है:

1) या तो विभिन्न सर्वर उदाहरणों के बीच समवर्ती उपयोगकर्ताओं की संख्या को विभाजित करने के लिए चिपचिपा सत्रों के साथ आंतरिक भार संतुलन का उपयोग करें। या ...

2) प्रतिक्रियाशील स्ट्रीमिंग के साथ एक उचित पैमाने पर संदेश कतार लागू करें जो आपका एकल सर्वर खींच सकता है।

आपका एप्लिकेशन आर्किटेक्चर अच्छा नहीं दिखता है।

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