클라이언트에서 서버로 전송후 응답 처리

913 views
Skip to first unread message

food...@gmail.com

unread,
Jul 2, 2017, 4:23:07 AM7/2/17
to Netty Korean User Group
안녕하세요..
클라이언트에서
ch.writeAndFlush(request); 이렇게 보내면 서버에서 처리하여
==> handler의 channelRead0 로 응답이 들어옵니다.
응답 처리를
channelRead0 이 아닌 보낼 때
String strResponse = ch.writeAndFlush(request) 의 응답값 ;  이런식으로 보내는 함수 안에서 응답을 받아 볼수 없는지요?

감사합니다.

dit...@gmail.com

unread,
Jul 5, 2017, 4:45:43 AM7/5/17
to Netty Korean User Group
네티는 비동기 이벤트 방식을 사용하기 때문에 동기화 방식의 코딩은 아니됩니다.


2017년 7월 2일 일요일 오후 5시 23분 7초 UTC+9, food...@gmail.com 님의 말:

crtr...@gmail.com

unread,
Jul 5, 2017, 7:04:03 AM7/5/17
to Netty Korean User Group
저는 로그인에 대해서는 동기화 로직으로 처리했습니다.

1) 핸들러에서  아래처럼 queue를 만들고

    final BlockingQueue<GenericRxMessage> rxQueue = new ArrayBlockingQueue<GenericRxMessage>(1);

2)   channelRead 에서 queue에 offer하고
                GenericRxMessage genericRx = new GenericRxMessage(packet_id, ...);
                boolean offer = rxQueue.offer(genericRx, RXQUE_PUT_TIMEOUT_SECONDS, TimeUnit.SECONDS);

3) 실제 요청하는쪽에서는
    String strResponse = ch.writeAndFlush(request) ;
    다음에
GenericRxMessage rx = null;
long remainTimeout = DEFAULT_RECEIVE_TIMEOUT_SECONDS; // 30초 업무에 맞게 ...
do {
rx = rxQueue.poll(1, TimeUnit.SECONDS);
ensureChannelActive(); //  timeout 경과되기 전에라도 채널 종료되면 InterruptException 발생시켜 빠져나가기 위함 
} while (rx == null && --remainTimeout > 0);

   
   

이희승 (Trustin Lee)

unread,
Jul 6, 2017, 12:14:22 AM7/6/17
to nett...@googlegroups.com
3.10 까지는 있었지만 4에서는 사라진 핸들러인 BlockingReadHandler를 참조해 보시는 것도 좋을 것 같습니다:


--
이 메일은 Google 그룹스 'Netty Korean User Group' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 netty-ko+u...@googlegroups.com에 이메일을 보내세요.
더 많은 옵션을 보려면 https://groups.google.com/d/optout을(를) 방문하세요.

sobs...@gmail.com

unread,
Feb 28, 2020, 8:23:07 PM2/28/20
to Netty Korean User Group
저도 GC가 최소화 되면서 서버쪽의 성능이슈에 가급적 무관하게 동시에 많은 처리를 할 수 있는클라이언트 구현에 고민하고 있는데 혹시 잘 해결하셨는지 어떻게 하셨는지 궁금하네요.
타 게시물보고 handler 안에서 queue에 넣고 외부에서 얻어오는 것으로 해보았는데 
잘 안되더군요. ㅠㅠ


2017년 7월 2일 일요일 오후 5시 23분 7초 UTC+9, food...@gmail.com 님의 말:
안녕하세요..
Reply all
Reply to author
Forward
0 new messages