Open LOG-INFO opened 1 year ago
ByteToMessageDecoder
decode(...)
ByteBuf.readableBytes()
ReplayingDecoder
LineBasedFrameDecoder
\n
\r\n
HttpObjectDecoder
MessageToByteEncoder
MessageToMessageEncoder
CombinedChannelDuplexHandler
HttpRequestDecoder
public void decode(ChannelHandlerContext ctx, I msg, List<Object> out)
out
public void decode(ChannelHandlerContext ctx, I msg, List<R> out)
TooLongFrameException
SO_RCVBUF
1MB
server.max-request-size=100KB
Channel이 닫힌 후 마지막 메시지를 생성해야 하는 일이 자주 있기 때문이다
끄적끄적
ByteToMessageDecoder
decode(...)
메서드에서ByteBuf.readableBytes()
를 통해 길이를 확인 후 특정 타입으로 디코딩해서 List에 담음ReplayingDecoder
decode(...)
메서드 다시 호출LineBasedFrameDecoder
:\n
or\r\n
으로 라인 구분HttpObjectDecoder
: HTTP 데이터용 디코더MessageToByteEncoder
: 메시지를 바이트 스트림으로 변경MessageToMessageEncoder
CombinedChannelDuplexHandler
를 통해 재사용성/확장성도 챙길 수 있음느낀점
더 알아본 점
ByteToMessageDecoder
(를 상속한HttpObjectDecoder
를 상속한HttpRequestDecoder
)를 기본적으로 사용함ReplayingDecoder
사용함궁금한 점
public void decode(ChannelHandlerContext ctx, I msg, List<Object> out)
에서out
을 제네릭이 아닐까?public void decode(ChannelHandlerContext ctx, I msg, List<R> out)
TooLongFrameException
을 보다가 생각난 것. Spring Webflux에서는 최대 메시지 크기를 몇으로 제한하고 있을까?SO_RCVBUF
인 듯 =1MB
server.max-request-size=100KB
Channel이 닫힌 후 마지막 메시지를 생성해야 하는 일이 자주 있기 때문이다
? 어떤 경우가 있지?