如果在我的decode
方法中我想要丢弃该消息(例如,如果此客户端不支持此类消息),我该怎么办?换句话说,我不想将解码的消息传递给另一个(业务)处理程序。
为了避免内存泄漏并与解码器的实现保持一致,我应该:
示例代码:
public class MyMessageDecoder extends MessageToMessageDecoder {
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
....
if (allowedTypes.containsKey(msgType)) {
...
out.add(...);
} else {
//what to do here to discard this this message
}
}
}
我正在使用netty 4.0.25并且我的解码器前面有LengthFieldBasedFrameDecoder(所以MyMessageDecoder正在接收所需的有效负载)
答案 0 :(得分:0)
MessageToMessageDecoder本身为您完成了释放。所以你唯一想做的就是抛出异常或类似的东西。