2013-03-25 5 views
5

मेरा नेटी चैनल हैंडलर channelClosed() अवरुद्ध हो गया है जबकि एक और संदेश messageReceived() पर प्राप्त किया जा रहा है।
मैंने संदेशों को सिंक्रनाइज़ करने के लिए OrderedMemoryAwareThreadPoolExecutor का उपयोग किया।
channelClosed() कम प्राथमिकता धागा द्वारा संसाधित किया गया है।?नेटटी सरल चैनल हैंडलर डिस्कनेक्शन अवरुद्ध हो गया है

क्या आप नेटटी में थ्रेड प्राथमिकता के बारे में बता सकते हैं। आप

objChannelPipeline.addLast("ipFilter", objCustomIPFilterHandler); 
    objChannelPipeline.addLast("idleHandler", new IdleStateHandler(timer,5,5, 0)); 
    objChannelPipeline.addLast("loggingHandler", objLoggingHandler);   
    objChannelPipeline.addLast("frameDecoder", 
      new DelimiterBasedFrameDecoder(Integer.MAX_VALUE, false, ChannelBuffers.copiedBuffer("\n\n".getBytes(CharsetUtil.UTF_8)))); 
    objChannelPipeline.addLast("messageDecoder", new CustomMessageDecoder()); 
    objChannelPipeline.addLast("groupOrder", executionHandler); 
    objChannelPipeline.addLast("ProtocolMultiplexer", CustomHandler); 

उत्तर

2

मुझे लगता है कि इस वजह से आप, OrderedMemoryAwareThreadPoolExecutor उपयोग कर रहे हैं इस मामले की घटनाओं वे किस क्रम में होने में क्रियान्वित की जाएगी में धन्यवाद। इसलिए messageReceived() हमेशा channelClose() से पहले निष्पादित होगा।

इसलिए यदि आपको 3 संदेश प्राप्त हुए हैं और उसके बाद चैनल बंद हो गया है, तो पहले तीन बार messageReceived निष्पादित किया जाएगा और उसके बाद केवल channelClose() निष्पादित किया जाएगा।

यदि आप इस मामले की तुलना में MemoryAwareThreadPoolExecutor का उपयोग करते हैं तो channelClosemessageReceived() से पहले इन्हें बुलाया जा सकता है क्योंकि ईवेंट के निष्पादन का आदेश नहीं दिया जाता है।

उम्मीद है कि इससे मदद मिलती है !!

+0

परिदृश्य एक चैनल बंद है, साथ ही साथ एक और चैनल कनेक्ट है और उस चैनल के माध्यम से एक संदेश प्राप्त होता है। – user2067201

+0

@ user2067201। उस मामले में 'messageReceived' को 'channelClose()' ईवेंट से पहले अलग-अलग चैनल पर होने के साथ भी बुलाया जा सकता है। लेकिन घटनाओं से जुड़ी कोई धागा प्राथमिकता नहीं है ताकि वे किसी भी क्रम में हो सकें। –

+0

आपके उत्तर के लिए धन्यवाद। मुझे पहले चैनल बंद कर दिया गया था, लेकिन जब संदेश प्राप्त हुआ() एम – user2067201

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