在Netty 4.1中,是否可以创建子或嵌套通道/管道?
,例如,我有一个管道,其中安装了各种编解码器以进行协议/序列化。在管道的最后,我将消息传递给我的应用程序级逻辑。过度简化的例子:
@Override
protected void channelRead0(ChannelHandlerContext ctx, Request request) throws Exception {
try {
Response response = applicationLogic.handle(request);
ctx.writeAndFlush(response);
} catch (Exception e) {
log.error(e);
}
}
此applicationLogic的句柄方法可以执行它想要的任何顺序逻辑。这清楚地区分了我的应用程序级逻辑,但是,我想利用Netty的ChannelPipeline提供的“advanced form of the Intercepting Filter pattern”。我想将Pipeline暴露给我的应用程序级别,以便用户可以轻松添加编解码器,事件侦听器,未捕获的异常处理程序等。
理想情况下,我希望能够创建某种类型的嵌套ChannelPipeline,其头部/尾部将传播到外部管道中。如,
A - > B -> { X -> Y -> Z } -> C
我可以将{ X -> Y -> Z }
管道暴露给我的应用程序层,而不关心影响我控制的管道的突变。
有没有干净的方法来模拟这种行为?
答案 0 :(得分:1)
不需要它,Netty不支持嵌套管道。那就是说你可以动态修改ChannelPipeline并将所需的ChannelHandler放在那里(并删除旧的那些)