MessageToByteEncoder的使用

MessageToByteEncoder

在 Netty 中,如果你有两个 HexMsgEncoder 类,并且它们都扩展了 MessageToByteEncoder 但针对不同类型的消息(一个处理 HexOriginData,另一个处理 SmartMsg),那么当你调用 ch.writeAndFlush((SmartMsg) data); 时,只有处理 SmartMsg 类型的 HexMsgEncoder 会被调用。

Netty 的 pipeline 会根据消息的类型来选择相应的 encoder。当你写入一个 SmartMsg 类型的对象时,Netty 会查找 pipeline 中能够处理该类型消息的 encoder。在你的情况下,只有扩展了 MessageToByteEncoder 的 HexMsgEncoder 会被选中并用于编码消息。

如果你有两个不同的 encoder 类并且它们都有相同的名称(在你的代码示例中,两个类都叫 HexMsgEncoder,这是不允许的,因为 Java 不允许类名重复),那么这实际上是一个编译错误。你需要确保每个类都有唯一的名称。

假设你有两个不同的 encoder 类,一个叫 HexOriginDataEncoder,另一个叫 SmartMsgEncoder,并且它们都正确地扩展了 MessageToByteEncoder 并分别处理了 HexOriginData 和 SmartMsg 类型的消息。在这种情况下,当你调用 ch.writeAndFlush((SmartMsg) data); 时,只有 SmartMsgEncoder 会被调用来处理消息。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值