Netty中通道处理程序的顺序

Netty中通道处理程序的顺序,netty,Netty,我正在努力学习netty频道处理程序,我在这方面遇到了障碍 在文件NettyServer.java中,作者提到将通道处理程序注册到通道管道 ch.pipeline().addLast( new RequestDecoder(), new ResponseDataEncoder(), new ProcessingHandler()); 这个订单让我有点困惑。从那时起,我会按如下方式注册订单 请求被解码 处理解码请求并生成响应 解码后的响应顺序正确 ch.pip

我正在努力学习netty频道处理程序,我在这方面遇到了障碍

在文件
NettyServer.java
中,作者提到将通道处理程序注册到通道管道

    ch.pipeline().addLast(
    new RequestDecoder(), 
    new ResponseDataEncoder(), 
    new ProcessingHandler());
这个订单让我有点困惑。从那时起,我会按如下方式注册订单

  • 请求被解码
  • 处理解码请求并生成响应
  • 解码后的响应顺序正确

    ch.pipeline().addLast(
    new RequestDecoder(),
    new ProcessingHandler(),
    new ResponseDataEncoder());
    

  • Netty中不同顺序背后的原因是什么?

    这里需要了解的重要一点是,入站和出站消息(和事件)流向不同的方向。入站数据(即您接收的数据)将从ChannelPipeline的开头开始,而您编写的消息将从结尾开始。因此,被调用处理程序的顺序是不同的

    检查ChannelPipeline javadocs,其中也有一些图表,以使其更加清晰:


    这里需要了解的重要一点是,入站和出站消息(和事件)以不同的方向流动。入站数据(即您接收的数据)将从ChannelPipeline的开头开始,而您编写的消息将从结尾开始。因此,被调用处理程序的顺序是不同的

    检查ChannelPipeline javadocs,其中也有一些图表,以使其更加清晰: