阅读 443

Netty中的引导类Bootstrap

Bootstrap是用来组织Netty的各个结构(pipeline,handler,eventloop),并使他们运行起来的类结构。分成两块,一个是客户端引导类Bootstrap,只用1个channel来处理所有的网络交互,另一个是服务端的ServerBootstrap,它提供一个父channel来接受客户端的请求,然后父channel创建多个子channel来用于的通信


Netty可以如何来支撑一个代理服务器,接收客户端请求的同时,又调用自己内部的服务?

这种业务场景首选需要一个服务器用于接收请求,同时新建一个客户端来向下游发起请求,Netty版的实现可以通过共享eventLoop来实现线程公用,既不需要创建额外的线程也不需要在接受请求的子channel和客户端channel之间交互数据时的上下文切换


这中类型解决方案Netty一般准则是复用eventLoop

如何一次添加多个ChannelHandler?

自定义继承ChannelInitiallizer,重载它的initChannel方法获取pipeline,然后调用addLast等一些列方法来一个一个添加自己的handler

ChannelOption是干什么的?

配置channel设置项用,当作用于引导时,它将适用于当前引导所创建的所有channel

如果要在netty的生命周期之外使用相关属性和数据,可以怎么做?

使用AttributeMap和AttributeKey<T>,他们可将任何类型的数据项与客户端和服务端的channel相关联