Mr孔先森

人生路莫慌张

mina心跳过滤器

一、Mina本身提供了一个过滤器类KeepAliveFilter,该过滤器用于在IO空闲的时候发送并且反馈心跳包,在KeepAliveFilter中共有五个构造器,最终调用的都是有五个参数的构造器
           1)KeepAliveMessageFactory:该实例引用用于判断接受与发送的包是否是心跳包,以及心跳请求包的实现
           2)IdleStatus:该过滤器所关注的空闲状态,默认认为读取空闲,即当读取通道空闲的时候发送心跳包
           3)KeepAliveRequestTimeoutHandler:心跳包请求后超时无反馈情况下的处理机制,默认为关闭连接
           4)KeepAliveRequestInterval:心跳请求包发送的频率
           5)KeepAliveRequestTimeout:心跳请求包超时时间
我们需要实现KeepAliveMessageFactory接口里的四个方法

如何实现以上四个方法呢,让我们来看看mina是如何实现的,源码如下

首先判断这个信息是不是心跳请求信息(是不是心跳请求信息是根据双方的约定来实现的,例如接收到的第一个字符串是x就代表这个信息是心跳请求信息)
如果是心跳请求信息,调用getResponse方法,在这里我们可以选择实现或者不实现getResponse方法,对应的就是心跳机制的两种不同类型,
然后判断这个信息是不是心跳响应信息,如果是心跳响应信息充值session的空闲状态

最后请求执行下一个过滤器

原理OVER

二、在IoAcceptor中配置过滤器链filterChainBuilder

在过滤器链中配置心跳过滤器 value-ref="heartbeat"

配置心跳过滤器KeepAliveFilter

三个参数的配置如下

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010031673/article/details/51548597
文章标签: mina 心跳过滤器
个人分类: mina
所属专栏: mina源码解析
上一篇(三)MyBatis源码解析之配置文件
下一篇(四)MyBatis源码解析之SqlSession
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭