mina源码解析之---数据接收处理流程


        如果想通过Mina来实现一个自定义协议的网络应用程序,用户只需要编写自定义协议编解码处理器和业务处理逻辑即可。由于每一个Session关联一个Processor处理线程,多个Session共享有限的Processor线程池,如果Handler中的业务逻辑处理比较耗时,会导致后续请求阻塞等待,严重降低效率,所以,一般会向Acceptor的FilterChain添加一个ExecutorFilter来缓解该问题,典型代码如下:

            DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
            // 日志
            LoggingFilter filter = new LoggingFilter();
            chain.addLast("logger", filter);
            // 协议处理
            chain.addLast("codec", new ProtocolCodecFilter(codecFactory));
            // 线程池
            chain.addLast("executor", new ExecutorFilter(Executors.newCachedThreadPool()));

当server接收到client发送数据后的处理流程如下:

呵呵,用jude画的序列图,不是很规范。备忘。
 

猜你喜欢

转载自scriptguy.iteye.com/blog/1774032
今日推荐