【发布时间】: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