[Java] Netty 소켓 통신

iniestar·2022년 6월 30일
0

1. Netty 란?

Netty는 소켓 통신에 필요한 쓰레드 운영 및 처리를 비동기로 하는 일종의 도구이다.
비동기를 사용함으로써 가지는 이점에 대한 내용은 "NIO(Non-Blocking IO)"를 검색해 보기 바란다!

2. 핵심 컴포넌트

Channel

네이밍으로 추측할 수 있듯이 하나 이상의 입/출력으로 연결된 소켓에 대한 연결 통로 역할을 한다. Channel은 열거나 닫고 연결을 끊을 수 있다.

Callback

네티는 내부적으로 이벤트에 대한 처리를 콜백(Callback)으로 처리하며 ChannelHandler 인터페이스 구현을 통해 이벤트를 처리할 수 있다.

Future

네티는 Future 객체를 사용하여 비동기 작업이 완료될때 ChannelFuture 인터페이스를 통해 결과 값을 저장하고 이것으로 작업 완료 여부를 확인할 수 있다. ChannelFuture는 ChannelFutureListner 인스턴스를 하나 이상 등록하여 사용할 수 있으며 ChannelFutureListener의 종류는 다음과 같다.

  • ChannelFutureListener.CLOSE : 작업 완료 이벤트 수신시 채널을 닫는다
  • ChannelFutureListener.CLOSE_ON_FAILURE : 작업 완료 이벤트 수신 & 결과가 실패일 때 채널을 닫는다
  • ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE : 작업 완료 이벤트 수신 & 결과가 실패일 때 채널 예외 이벤트를 발생시킨다

Pipeline

파이프라인(pipeline)은 특정 이벤트를 걸어 핸들러에게 전달하는 역할을 한다.

profile
while(true) { 손가락 관절염++ };

0개의 댓글