`
xklin04
  • 浏览: 12742 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
ChannelHandler是处理业务逻辑的代码所在。下面首先分析下ChannelHandler的体系结构,然后重点分析几个有意思的Handler:IdleStateHandler、ExceptionHandler1.ChannelHandler在Netty中的位置ChannelHandler分upstreamChannelHandler和downstreamChannelHandler,分别 ...
1.网络模型 Netty实现了非常经典的多reactor模型其中mainReactor是对应的Boss类,它负责接收客户端新来的连接。它使用了线程池1,有多个Boss对象供绑定多个地址进行监听,这些地址均匀分配到各个Boss上。默认只使用一个Boss对象监听。   subReactor对应Worker类,它负责监听由Boss类accept的socket的读写事件。它使用了另外一个线程池2,有多个Worker类处理这些socket,socket均匀分布在各个worker上。每个worker线程读取消息后,同步调用相应的解码、处理器,待处理完毕后才返回。因此如果业务处理器是非常耗时的非计算 ...
在前面已经说明了在接收新连接时,将向worker注册默认的READ事件。然后worker开始阻塞select监听事件。 发送消息的情况。 这种情况常常是由DownstreamHandler主动发起,在对接收的消息处理后主动发送消息ctx.sendMessage,由内向外经过由DownstreamHandler和encode组成的过滤链,在链的尽头由NioServerSocketPipelineSink处理MessageEvent事件。 1.首先将事件放入channel中的writeBufferQueue中。 MessageEvent event = (MessageEvent) e; ...
处理客户端新连接请求的方法从org.jboss.netty.channel.socket.nio.AbstractNioSelector.run()开始分析。 NioServerBoss是AbstractNioSelector的子类,处理服务器端接收新请求的处理类selector。如果有多个selector,可以创建bosspool时设置多个selector实例, ...
下文将剖析ServerBootstrap.bindAsync()方法所涉及到的流程。 1.概念 ChannelHandler分ChannelUpstreamHandler和ChanneldownstreamHandler,前者指向服务器接收事件的调用处理器,后者是服务器由内而外发送事件的事件处理器。 上下行消息传递方法介绍 sendUpstream()方法表发由外向内传递事件, public void sendUpstream(ChannelEvent e) { DefaultChannelHandlerContext head = getActualUpstreamCont ...
今天开始接触Netty这个NIO框架,由与MINA同一作者创作的框架,在看过User Guide 3.6之后,API风格与使用方式与MINA2大致类似。作为学习新框架的起始,先来几个Hello World程序吧。 看API依然是基于Reactor模型,程序分三部分 1.事件处理程序 主要包括对具体业务消息的处理,对各种连接状态的响应    public class TimeServerHandler extends SimpleChannelHandler { @Override public void channelConnected(C ...
Global site tag (gtag.js) - Google Analytics