Netty: 向ChannelPipeline中添加ChannelHandler的顺序

Netty中的ChannelHandler有inbound handler,处理接收数据的过程;有outbound handler,处理发数据的过程。当然,也有的handler既处理接收的数据 ,也处理发送的数据。

每个channel对应一个ChannelPipeline。handler被添加到ChannelPipeline中,处理channel的事件。

为了直观地理解,借用Netty官网上ChannelPipeline接口描述部分的一张图https://netty.io/4.1/api/index.html:
在这里插入图片描述

处理channel接收数据的过程,一般顺序是:

  • 切分成完整的消息,例如DelimiterBasedFrameDecoder(基于分隔符切分)、FixedLengthFrameDecoder(基于固定长度切分)、LengthFieldBasedFrameDecoder(基于长度字段及长度字段指明的长度切分)。
  • 解码,例如StringDecoder,将字节数据解码为字符串
  • 处理具体业务逻辑的handler

处理channel发送数据的过程,一般顺序是:

  • 处理具体业务逻辑的handler。
  • 编码,例如StringEncoder,将字符串编码为字节

所以向ChannelPipeline增加handler的时候,一般添加顺序是:文章来源地址https://uudwc.com/A/0rxLe

  • 记录日志的handler,例如LoggingHandler(这个既是inbound handler,也是outbound handler)
  • 切分完整的消息的handler
  • 解码handler、编码handler
  • 处理具体业务逻辑的handler

原文地址:https://blog.csdn.net/panghuangang/article/details/132161465

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

上一篇 2023年08月08日 11:40
电力巡检无人机助力迎峰度夏,保障夏季电力供应
下一篇 2023年08月08日 11:40