Netty 파이프라인
각 Netty SocketChannel에는 ChannelPipeline이 있고, ChannelPipeline에 ChannelHandler 인스턴스 목록이 포함 됩니다.
ChannelHandler인터페이스는 두 개의 서브 인터페이스를 가지고 있습니다.
ChannelInboundHandler와 ChannelOutboundHandler가 존재합니다.
처음으로 데이터가 수신되면 SocketChannel에서 ChannelInboundHandler으로 데이터가 전달됩니다.
ChannelInboundHandler에서 데이터가 처리가 되면 그 다음 ChannelInboundHandler로 전달되며 마지막에 Application에 도달합니다.
ChannelInboundHandler는 파이프 라인의 다음 핸들러로 전달되기 전에 수신 한 데이터를 변환 할 수 있습니다.
예를 들어, 원시 바이트는 HTTP 객체 또는 다른 객체로 변환 될 수 있습니다.
파이프 라인의 다음 핸들러는 원시 데이터가 아닌 HTTP 객체를 확인합니다.
그림에 ChannelInboundHandler 및 ChannelOutboundHandler 인스턴스가 별도 목록으로 표시되어 있지만 실제로는 동일한 목록 (파이프 라인)에 있습니다.
따라서 ChannelInboundHandler가 무언가를 SocketChannel에 다시 쓰기로 결정하면,
데이터는 데이터를 쓰는 ChannelInboundHandler보다 ChannelPipeline의 앞부분에 있는 모든 hannelOutboundHandler 인스턴스를 거쳐서 반환됩니다.
이를 통해 비동기적인 통신이 가능하게 되는 거죠.
참고 사이트
http://tutorials.jenkov.com/netty/netty-channelpipeline.html
'프로토콜 > Netty' 카테고리의 다른 글
[Java] Netty Client (0) | 2020.09.07 |
---|---|
[Java] Netty Server (0) | 2020.09.04 |
Netty란? (0) | 2020.09.01 |