
【Netty 】Netty 知识整理 (1) fireChannelRead用法
发布日期:2021-05-08 10:59:50
浏览次数:23
分类:精选文章
本文共 953 字,大约阅读时间需要 3 分钟。
概述
fireChannelRead表示传递消息至下一个处理器,因为pipline的原因,我们可能有一个链式的处理队列,这个队列有头和尾之分,那么消息通常从头处理器进入。
假设现有队列A、B、C,一条消息消息首先进入A,如果A不显示调用fireChannelRead将消息传递至B的话,那么B和C永远收不到消息。
我们来看个例子:
public class AHandler extends ChannelInboundHandlerAdapter { public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { ctx.fireChannelRead(msg);
上面的例子表示A处理器把msg透传给了B,当然了,A不一定直接透传,也可以传递处理过的消息。我们来看个例子:
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { ByteBuf buf = (ByteBuf) msg; byte[] bytes = new byte[buf.readableBytes()]; // 读取输入的消息至byte数组 buf.readBytes(bytes); int length = bytes.length + 1; ByteBuf newBuf = ctx.alloc().buffer(length); newBuf.writeBytes(bytes); // 多写入一个boolean类型的数据 newBuf.writeBoolean(false); ReferenceCountUtil.release(msg); ctx.fireChannelRead(newBuf); }
这个例子是在原有的消息之上,封装了一个boolean类型的数据,然后再传递至下一个处理器。
注意:原有的消息需要释放。发表评论
最新留言
不错!
[***.144.177.141]2025年04月10日 11时38分35秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
spring启动错误:Could not resolve placeholder
2021-05-08
查询某表格上次进行vacuum的时间
2021-05-08
invalid byte sequence for encoding
2021-05-08
redis向数组中添加值并查看数组长度
2021-05-08
JS编写一个函数,计算三个不同数字的大小,按从小到大顺序打印(穷举法)
2021-05-08
技术美术面试问题整理
2021-05-08
C++学习记录 五、C++提高编程(2)
2021-05-08
VUE3(八)setup与ref函数
2021-05-08
智能合约开发实践(1)
2021-05-08
CMake自学记录,看完保证你知道CMake怎么玩!!!
2021-05-08
ORB-SLAM2:LoopClosing线程学习随笔【李哈哈:看看总有收获篇】
2021-05-08
MySQL隐藏文件.mysql_history风险
2021-05-08
js求阶乘
2021-05-08
L2-031 深入虎穴 (25 分)
2021-05-08
简单的xml读取存储方法(未优化)
2021-05-08
Nginx---惊群
2021-05-08
项目中常用的审计类型概述
2021-05-08
(九)实现页面底部购物车的样式
2021-05-08