【问题标题】:Created a sub or nested channel/pipeline in Netty?在 Netty 中创建了子或嵌套通道/管道?
【发布时间】:2018-04-11 22:28:08
【问题描述】:

在 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 提供的“advanced form of the Intercepting Filter pattern”。我想向我的应用程序级别公开管道,以便用户可以轻松添加编解码器、事件侦听器、未捕获的异常处理程序等。

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

A - > B -> { X -> Y -> Z } -> C

我可以将{ X -> Y -> Z } 管道暴露给我的应用程序层,而不必担心影响我控制的管道的突变。

有什么干净的方法可以模拟这种行为吗?

【问题讨论】:

    标签: netty


    【解决方案1】:

    不需要,Netty 不支持嵌套管道。也就是说,您可以即时修改 ChannelPipeline 并将所需的 ChannelHandlers 放在那里(并删除旧的)

    【讨论】:

      猜你喜欢
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多