18-高并发- 编码和解码-Encoder原理与实践

本文介绍了Netty中的编码器概念,特别是MessageToByteEncoder和MessageToMessageEncoder的使用。MessageToByteEncoder用于将Java对象编码为ByteBuf,而MessageToMessageEncoder则能提取字符串中的数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、编码器的概念

编码器是ChannelOutboundHandler出站处理器的实现类。一个编码器将出站对象编码之后,编码后数据将被传递到下一个ChannelOutboundHandler出站处理器,进行后面出站处理。由于最后只有ByteBuf才能写入到通道中去,因此可以肯定通道流水线上装配的第一个编码器一定是把数据编码成了ByteBuf类型。

二、MessageToByteEncoder编码器

MessageToByteEncoder的功能是将一个Java POJO对象编码成一个ByteBuf数据包。

        public class Integer2ByteEncoder extends MessageToByteEncoder<Integer> {
            @Override
            public void encode(ChannelHandlerContextctx, Integer msg, ByteBuf out)
                  throws Exception {
              out.writeInt(msg);
              Logger.info("encoder Integer = " + msg);
            }
        }

三、 MessageToMessageEncoder编码器

将字符串的所有数字提取出来。

        //...
        public class String2IntegerEncoder extends MessageToMessageEncoder<String> {
            @Override
            protected void encode(
            ChannelHandlerContext c, String s, List<Object> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

良之才-小良

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值