1. 只允许集群种的一台执行定时任务
2. 数据库中设置定时任务表,并设置两个字段 执行状态(0-未执行 1-执行中) 和下次执行时间。每次定时任务执行的时候,先判断有没有到执行时间,然后判断执行状态,如果是1,则不执行。如果是0则执行。这里可以用update table set status = 1 where status = 0。这条语句只有一台机器选更新成功。更新成功的执行定时任务。
操作步骤:首先集成quartz,主要是依赖quartz中的corn表达式,然后自定义表,并且写个公共业务方法即可。
3. 使用redis或者zk的分布式锁
4. quartz的另一种集成方式
quarz的相关资料,网上信息比较少。可以参考这个博客试试
SpringBoot整合Quartz_桐花思雨的博客-CSDN博客_springboot整合quartz
5. 当当网的elastic-job
ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成,一般来说用ElasticJob-Lite(其实不懂)
注意:使用elastic job 需要提前安装好ZK环境。