if (outboundChannel.isActive()) { outboundChannel.writeAndFlush(msg).addListener(new ChannelFutureListener() { // Snip } ctx.fireChannelRead(msg);
将ByteBuf传递给另一个通道后,其他通道的责任是再次减少引用计数.因为另一个通道现在递减了引用计数,所以它现在不可用.
解决此问题的最佳方法是在使用.retain()
以下方法将流量传递到其他通道之前手动递增值:
outboundChannel.writeAndFlush(msg.retain()).addListener(new ChannelFutureListener() {
// Your remaining code