내 네트워크 채널 처리기 channelClosed()
이 (가) messageReceived()
에 다른 메시지를 수신하는 동안 차단됩니다.
메시지 동기화에 OrderedMemoryAwareThreadPoolExecutor
을 사용했습니다.
channelClosed()
은 낮은 우선 순위 스레드로 처리됩니다.Netty 단순 채널 처리기 연결 끊김이 발생합니다.
스레드 우선 순위에 대해 알려주십시오. 는
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);
시나리오는 하나의 채널이 닫히는 동시에 다른 채널이 연결되고 해당 채널을 통해 메시지가 수신됩니다. – user2067201
@ user2067201 이 경우'channelReceived'는'channelClose()'이벤트가 다른 채널에서 일어나기 전에 호출 될 수 있습니다. 그러나 이벤트와 관련된 스레드 우선 순위가 없으므로 순서에 관계없이 발생할 수 있습니다. –
답장을 보내 주셔서 감사합니다. 먼저 채널 종료 이벤트를 받았지만 messageReceived() 일 때 – user2067201