在Netty中创建子通道或嵌套通道/管道?

在Netty中创建子通道或嵌套通道/管道?,netty,Netty,在Netty 4.1中,是否可以创建子通道或嵌套通道/管道 例如,我有一个管道,其中安装了各种编解码器,用于协议/序列化。在管道的最后,我将一条消息传递给我的应用程序级逻辑。过于简化的示例: @Override protected void channelRead0(ChannelHandlerContext ctx, Request request) throws Exception { try { Response response = applicationLogi

在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的handle方法可以执行它想要的任何顺序逻辑。这清楚地分离了我的应用程序级逻辑,然而,我想利用Netty的ChannelPipeline提供的“”。我希望将管道公开到我的应用程序级别,以便用户可以轻松地添加编解码器、事件侦听器、未捕获异常处理程序等

理想情况下,我希望能够创建某种类型的嵌套ChannelPipeline,其头部/尾部将传播到外部管道中。例如:

A - > B -> { X -> Y -> Z } -> C
在这里,我可以将
{X->Y->Z}
管道公开给我的应用层,而不必担心影响我控制的管道的突变


有没有干净的方法来模拟这种行为?

没有必要,Netty不支持嵌套管道。也就是说,您可以动态修改ChannelPipeline,并将所需的ChannelHandler放入其中(并删除旧的ChannelHandler)