八 netty学习之 handler,childhandler的困惑

  1. netty官方包里带的第一个例子,

    客户端那边,发送了一个全0的消息到服务器,而且每次writeAndFlush之后addListener,这个listener的操作就是写同样的消息过去,依次循环

    服务器这里,

.handler(new LoggingHandler(LogLevel.INFO))
             .childHandler(new ChannelInitializer<SocketChannel>() {
                 @Override
                 public void initChannel(SocketChannel ch) {
                     ChannelPipeline p = ch.pipeline();
                     if (sslCtx != null) {
                         p.addLast(sslCtx.newHandler(ch.alloc()));
                     }
//                     p.addLast(new LoggingHandler(LogLevel.INFO));
                     p.addLast(new DiscardServerHandler());
                 }
             });

这个LoggingHandler的方法

 @Override
   public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
       if (logger.isEnabled(internalLevel)) {
           logger.log(internalLevel, format(ctx, "RECEIVED", msg));
       }
       ctx.fireChannelRead(msg);
   }

意思是,每读一个消息,就打印一次日志.然后传到下一个handler里,这里的handler没有做任何操作.

** 1. 为什么这个LoggingHandler放在handler()里就只执行一次,**即打印

** 16:56:24.374 [nioEventLoopGroup-0-0] INFO i.n.handler.logging.LoggingHandler - [id: 0x25e5364a] REGISTERED 16:56:24.383 [nioEventLoopGroup-0-0] INFO i.n.handler.logging.LoggingHandler - [id: 0x25e5364a] BIND: 0.0.0.0/0.0.0.0:8009 16:56:24.386 [nioEventLoopGroup-0-0] INFO i.n.handler.logging.LoggingHandler - [id: 0x25e5364a, /0:0:0:0:0:0:0:0:8009] ACTIVE 16:57:13.515 [nioEventLoopGroup-0-0] INFO i.n.handler.logging.LoggingHandler - [id: 0x25e5364a, /0:0:0:0:0:0:0:0:8009] RECEIVED: [id: 0xe6b752e0, /127.0.0.1:49281 => /127.0.0.1:8009] **

而放到childHandler里,打印的是

** 17:09:35.028 [nioEventLoopGroup-1-0] INFO i.n.handler.logging.LoggingHandler - [id: 0x43de73d7, /127.0.0.1:49827 => /127.0.0.1:8009] REGISTERED 17:09:35.032 [nioEventLoopGroup-1-0] INFO i.n.handler.logging.LoggingHandler - [id: 0x43de73d7, /127.0.0.1:49827 => /127.0.0.1:8009] ACTIVE 17:09:35.067 [nioEventLoopGroup-1-0] INFO i.n.handler.logging.LoggingHandler - [id: 0x43de73d7, /127.0.0.1:49827 => /127.0.0.1:8009] RECEIVED: 1024B

     +-------------------------------------------------+
     |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |

+--------+-------------------------------------------------+----------------+

|00000000| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000010| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000020| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000030| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000040| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000050| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000060| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000070| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000080| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000090| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000000a0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000000b0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000000c0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000000d0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000000e0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000000f0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000100| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000110| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000120| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000130| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000140| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000150| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000160| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000170| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000180| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000190| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000001a0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000001b0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000001c0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000001d0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000001e0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000210| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000220| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000230| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000240| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000250| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000260| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000270| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000280| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000290| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000002a0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000002b0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000002c0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000002d0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000002e0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000002f0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000300| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000310| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000320| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000330| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000340| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000350| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000360| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000370| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000380| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000390| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000003a0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000003b0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000003c0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000003d0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000003e0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000003f0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|

+--------+-------------------------------------------------+----------------+

17:09:35.069 [nioEventLoopGroup-1-0] INFO i.n.handler.logging.LoggingHandler - [id: 0x43de73d7, /127.0.0.1:49827 => /127.0.0.1:8009] RECEIVED: 1024B

     +-------------------------------------------------+
     |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |

+--------+-------------------------------------------------+----------------+

|00000000| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000010| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000020| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000030| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000040| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000050| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000060| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000070| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000080| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |00000090| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000000a0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000000b0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |000000c0| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................

**

既然能看出循环了,我只截取了前面的两个.

  1. 客户端这样的不停的发送字节过来,每次发送的是256个字节的0,为什么服务器端这边接收的是以1024个字节为一次.

  2. 我之前看了一篇博客,上面写执行inbound的handler线程到最后一个业务handler为止,outbound就是worker组里的另外一个线程了,而据我的测试,发现,inbound和outbound的handler是在同一个线程的, inbound和outbound的handler是必须在同一个线程吗?是随机的?

4.netty里提供了

ctx.executor().schedule

ctx.channel().eventLoop().schedule

这两个方法可以执行一个任务,经测试,这两个方法的线程都是从worker线程池里拿到的,在业务handler里,我想处理较为耗时的业务逻辑,比如访问db,是用上述两个方法,还是自己建一个线程池,或是其他方法?

转载于:https://my.oschina.net/u/1777377/blog/527731

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值