springboot定时任务项目(一)

需求:1.项目中有一个业务需要跑一个定时器 2.高效 3.从mongo里面获取数据 4.满足条件的数据需要保存的数据库 4.给用户发动通知


一、定时器的选择

总共有三种定时器的选择

1、Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。Timer的优点在于简单易用;缺点是Timer的所有任务都是由同一个线程调度的,因此所有任务都是串行执行的。同一时间只能有一个任务在执行,前一个任务的延迟或异常都将会影响到之后的任务。这种实现已经被项目所废弃。

2、开源集群任务框架Quartz,这是一个功能比较强大的的调度器,适合做任务集群,解决单点故障,目前项目中在使用。

3、Spring家族自带的Scheduled,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,适用于简单的任务,微服务使用很方便。

因为我们的项目需求,首先我只需要一个定时任务一个线程即可也不需要并发的进行定时任务。相对来说比较简单的定时任务的需求,而且为了继承放进spring里面所以我选择第三种即可。

二、关于高效

因为始终就是一个定时器一个线程所以效率这块只能从定时器触发之后的操作来处理。我还暂时没比较出三种定时器实现的效率问题,而且由于业务简单所以暂时先使用第三种spring自带的Scheduled来实现定时器,后期如果有效率问题,我会及时的更新本篇文档并且说明。

三、 从mongo里面获取数据

待续

四、给用户发送通知

待续

你可能感兴趣的:(springboot定时任务项目(一))