1、现有业务场景描述如下
当某一事件发生时,连续通知相关人员三次,第一次及时通知,以后两次的通知每次间隔2秒。
使用netty的定时器实现如下
2、netty的HashedWheelTimer
// 一个HashedWheelTimer是一个环形结构,可以想象成时钟,
// 分为很多格子,一个格子代表一段时间(越短Timer精度越高),
// 并用一个List保存在该格子上到期的所有任务,同时一个指针随着时间流逝一格一格转动,
// 并执行对应List中所有到期的任务。
// 这个类一般用来处理大量的定时任务且任务对时间精度要求相对不高,
// 比如链接超时管理等场景, 缺点是, 内存占用相对较高.该类中有两个重要的参数
// tickDuration:即一个格子代表的时间,默认为100ms
// ticksPerWheel (Wheel Size):一个Wheel含有多少个格子,默认为512个,
// 如果任务较多可以增大这个参数.
3、pom文件如下
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.75.Final</version>
</dependency>