netty官方包裏帶的第一個例子,服務器
客戶端那邊,發送了一個全0的消息到服務器,並且每次writeAndFlush以後addListener,這個listener的操做就是寫一樣的消息過去,依次循環ide
服務器這裏,oop
.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沒有作任何操做..net
** 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] **3d
而放到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: 1024Bnetty
+-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f |
+--------+-------------------------------------------------+----------------+code
|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 |................
**
既然能看出循環了,我只截取了前面的兩個.
客戶端這樣的不停的發送字節過來,每次發送的是256個字節的0,爲何服務器端這邊接收的是以1024個字節爲一次.
我以前看了一篇博客,上面寫執行inbound的handler線程到最後一個業務handler爲止,outbound就是worker組裏的另一個線程了,而據個人測試,發現,inbound和outbound的handler是在同一個線程的, inbound和outbound的handler是必須在同一個線程嗎?是隨機的?
4.netty裏提供了
ctx.executor().schedule
ctx.channel().eventLoop().schedule
這兩個方法能夠執行一個任務,經測試,這兩個方法的線程都是從worker線程池裏拿到的,在業務handler裏,我想處理較爲耗時的業務邏輯,好比訪問db,是用上述兩個方法,仍是本身建一個線程池,或是其餘方法?