网上包括线下书本,都是说入站和出站时相反的执行顺序,但是我执行后顺序时一样的!
netty的版本时4.1.6
执行代码:
//通道初始化处理器
ChannelInitializer channelInitializer = new ChannelInitializer<EmbeddedChannel>() {
@Override
protected void initChannel(EmbeddedChannel ch) throws Exception {
ch.pipeline().addLast(new NettyInHandler1());
ch.pipeline().addLast(new NettyInHandler2());
ch.pipeline().addLast(new NettyOutHandler1());
ch.pipeline().addLast(new NettyOutHandler2());
}
};
处理器没有实际处理事务:
class NettyInHandler1 extends ChannelInboundHandlerAdapter {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
super.channelRead(ctx,msg);
Log.info("》》》》》》进入了NettyInHandler1");
}
}
class NettyInHandler2 extends ChannelInboundHandlerAdapter {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
super.channelRead(ctx,msg);
Log.info("》》》》》》进入了NettyInHandler2");
}
}
class NettyOutHandler1 extends ChannelOutboundHandlerAdapter{
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
Log.info("》》》》》》进入了NettyOutHandler1");
super.write(ctx, msg, promise);
}
}
class NettyOutHandler2 extends ChannelOutboundHandlerAdapter{
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
Log.info("》》》》》》进入了NettyOutHandler2");
super.write(ctx, msg, promise);
}
}
输出结果是:
00:00 INFO: 》》》》》》进入了NettyOutHandler2
00:00 INFO: 》》》》》》进入了NettyOutHandler1
00:00 INFO: 》》》》》》进入了NettyInHandler2
00:00 INFO: 》》》》》》进入了NettyInHandler1
结果可以看到,入站和出站时同样的顺序,求大神指点。