서버에 대한 연결 시도시 channel Registered 의 False 조건 질문입니다.

25 views
Skip to first unread message

박세진

unread,
Sep 26, 2021, 9:49:35 PM9/26/21
to Netty Korean User Group
서버에 대한 재접속을 시도하는경우
간혹 재접속을 못하는 경우가 존재하여 이를 해결하기위해
channel의 Registered()가 False가 반환되는 조건 질문드립니다.

서버에 대한 접속을 유지하기 위해
재접속 코드를 
ChannelFutureListener클래스를 이용해서
channelFuture.channel().eventLoop().schedule( callableClient, config , TimeUnit.SECONDS);


연결, 연결 종료시 재접속을 위해 callableClient에서 
clientChannel = connectChannelFuture.addListener( connectListinner ).sync().channel()
                .closeFuture().addListener( closeListenner ).sync().channel();


테스트환경에서는 문제없이 재접속이 계속 잘되고
실환경에서도 재접속이 잘되다가 며칠에 한번꼴로 재접속이 안되서
접속시도, 접속종료, 주기적으로 채널의 상태를 체크하기위해서
channel의 isActive, isOpen, isWritable, isRegistered
channelFuture의 isSuccess, isDone, isCancelled, isCancellable
의 메소드를 확인해보니 
연결시도시 정상으로 판단할때 사용한 정보는 isActive만 사용했는데 

isActive는 True지만  isRegistered 가 False일때 재접속이 안되는 것 같아서요.
일주일간의 로그를 확인가능한데 지금 재접속이 안된경우는 이것밖에 확인이 안되는데다
테스트 환경에서 동일하게 isRegistered 가 False로 동작하게끔 하여
확인해보려고 하는데 어떻게 해야할까요?

지금 테스트는 Hercules 를 이용해서 
로컬호스트, 같은 망 내의 다른 호스트에 readIdle 시간 초과시 재접속을 하는 방법으로 하고있습니다..
Reply all
Reply to author
Forward
0 new messages