7.부트스트랩 옵션
부트스트랩을 통해 구성할 수 있는 설정 옵션은 크게 다음과 같음
- 채널의 전송 모드
- 이벤트 루프
- 채널 파이프라인
1. 채널의 전송 모드
사용할 소켓 채널 모드에 따라 블로킹, 논블로킹 그리고 epoll로 지정할 수 있음
epoll 모드는 입출력 다중화 기법으로 입출력 방식들 중에서 빠른 편에 속하지만, 리눅스에서만 동
작하며, 커널 2.6버전 이후부터 사용 가능
Sample.java
ServerBootstrap bootstrap = new ServerBootstrap();
bootstrap.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class) // 전송 모드를 논블로킹 모드로 설정
// ...2. 이벤트 루프
이벤트 루프는 소켓 채널에서 발생한 이벤트를 처리하는 스레드 구현체(뒤에서 설명)
Sample.java
EventLoopGroup bossGroup = new NioEventLoopGroup(1);
EventLoopGroup workerGroup = new NioEventLoopGroup();
ServerBootstrap bootstrap = new ServerBootstrap();
bootstrap.group(bossGroup, workerGroup) // 이벤트 루프를 master, worker로 구분하여 생성3. 채널 파이프라인
소켓 채널로 수신된 데이터를 처리할 데이터 핸들러들을 지정하는 곳, 채널 파이프라인은 연결된 채널에서 사용할 데이터 핸들러에 대한 내용을 포함함
Sample.java
ServerBootstrap bootstrap = new ServerBootstrap();
bootstrap.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) {
ChannelPipeline p = ch.pipeline(); // 채널 파이프라인 생성
p.addLast(new EchoServerHandler()); // 파이프라인에 데이터 핸들러 등록
}
});정리하면, 부트스트랩이란 네티의 유틸 클래스로 네티로 작성한 네트워크 애플리케이션의 동작 방식과 환경 설정을 도와주는 헬퍼 클래스
네트워크 애플리케이션 설정에 필요한 모든 내용들을 담고 있음
💡
Tip
부트스트랩 관련 네티의 실제 API 참고
AbstractBootstrap.java, 빌더 패턴으로 구현되어 있음
ServerBootstrap, 서버 구성용 부트스트랩 클래스
Bootstrap, 클라이언트 프로그램 구현용 부트스트랩 클래스
Last updated on