2012-04-03 2 views
11

특히 채널의 다른 쪽 끝이 예기치 않게 종료되는 경우 (예 : 프로세스가 중지됨)에 관심이 있습니다. 그것은 netty가 채널 폐쇄/연결 해제 이벤트를 안정적으로 실행하지 못하는 것처럼 보일 때가 있습니다. 또한 연결 재설정을 위해 반드시 SocketException을 throw하지는 않습니다.는 netty가 채널 닫기/연결 해제를 안정적으로 감지 할 수 있습니까?

채널에 글쓰기를 시도했지만 예외가 발생하거나 다른 이벤트가 발생하지 않고 계속 작동합니다.

Windows에서 이것을 테스트하고 있습니다. 차이점이 있다면 netty 3.3.0.Final을 사용하십시오.

답변

5

당신이 말한 것처럼 어떤 경우에는 채널이 닫혔는지 여부를 확인할 수 없습니다. Here은이 질문에서 언급 한 동일한 문제입니다. 증명을 해결하는 한 가지 방법은 heartbeat messages입니다. Netty는 IdleStateHandler으로 하트 비트를 지원합니다.

또한 당신은 IdleStateHandler 이러한 참조를 검토 할 수 있습니다 :

+0

한 가지 문제가 그물코가 명랑하게 다른 폐쇄 된 채널에 쓰기를 계속하다 종료. 안정적으로 채널을 감지하여 응답을 기대하는 유일한 방법입니까? –

+0

연결을 수동으로 연결하면 올바르게 작동합니다. 단절을 감지하는 또 다른 방법이 있을지 모르지만이 문서에는 네티에 대한 내용이 나와 있습니다. 두 번째 제안은 채널의 setReadable 및 isWritable 메소드에 대한 검사 및 읽기입니다. 제작자 내에서 Channel.isWritable로 채널 상태를 제어하고 소비자 내에서 Channel.setReadable로 채널을 읽을 수있게 할 수 있습니다. 나는 확신 할 수 없지만이 마지막 트릭이 작동 할 수도있다. – ozhan

관련 문제