我有一个关于ByteToMessageDecoder
的问题。 decode
方法具有签名
public void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out)
其中out
是管道中下一个处理程序的输出。如果我多次调用out.add()
来插入多条消息,那么下一个处理程序会看到什么?
例如,
ByteToMessageDecoder -> SimpleChannelInboundHandler<String>
ByteToMessageDecoder
的{{1}}方法中,我致电decode
,out.add("first")
,out.add("second")
鉴于out.add("third")
的消息处理方法具有签名SimpleChannelInboundHandler
,我将为protected void channelRead0(ChannelHandlerContext ctx, String message)
参数看到什么? message
会被调用三次吗?
答案 0 :(得分:4)
列表中包含的每条消息都将通过fireChannelRead(...)调用转发到下一个处理程序。因此,在您的示例中,您的处理程序将被调用三次。