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的时候,一般添加顺序是:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值