我是靠谱客的博主 怕孤独机器猫,这篇文章主要介绍Netty连接超时处理方法,现在分享给大家,希望可以做个参考。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以下处理方法都是基于netty3.5.13版本。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


官方给出的处理方法:

// An example that sends a ping message when there is no outbound traffic
 // for 30 seconds.  The connection is closed when there is no inbound traffic
 // for 60 seconds.

 public class MyPipelineFactory implements ChannelPipelineFactory {

     private final Timer timer;
     private final ChannelHandler idleStateHandler;

     public MyPipelineFactory(Timer timer) {
         this.timer = timer;
         this.idleStateHandler = new IdleStateHandler(timer, 60, 30, 0), // timer must be shared.
     }

     public ChannelPipeline getPipeline() {
         return Channels.pipeline(
             idleStateHandler,
             new MyHandler());
     }
 }

 // Handler should handle the IdleStateEvent triggered by IdleStateHandler.
 public class MyHandler extends IdleStateAwareChannelHandler {

     @Override
     public void channelIdle(ChannelHandlerContext ctx, IdleStateEvent e) {
         if (e.getState() == IdleState.READER_IDLE) {
             e.getChannel().close();
         } else if (e.getState() == IdleState.WRITER_IDLE) {
             e.getChannel().write(new PingMessage());
         }
     }
 }

 ServerBootstrap bootstrap = ...;
 Timer timer = new HashedWheelTimer();
 ...
 bootstrap.setPipelineFactory(new MyPipelineFactory(timer));


需要注意的两点:

1、IdleStateHandler构造函数参数含义


   构造函数体

   public IdleStateHandler(Timer timer,
                        int readerIdleTimeSeconds,
                        int writerIdleTimeSeconds,
                        int allIdleTimeSeconds)

      这里的timer是org.jboss.netty.util.Timer,而不是java.util.Timer

   readerIdleTimeSeconds、固定时间(单位为秒)检测一下是否有接收到消息。指定0时,禁用

      writerIdleTimeSeconds、固定时间(单位为秒)写一次消息。指定0时,禁用

allIdleTimeSeconds、无论是读还是写都在指定时间内进行。指定0时,禁用

2、pipeline在执行事件回调的时候,是后进先出规则的,所有在加载idleStathandler和MyHandler一定要注意顺序





最后

以上就是怕孤独机器猫最近收集整理的关于Netty连接超时处理方法的全部内容,更多相关Netty连接超时处理方法内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(133)

评论列表共有 0 条评论

立即
投稿
返回
顶部