原文:https://blog.csdn.net/huyang1990/article/details/78551578

SpringBoot提供了 Schedule模块完美支持定时任务的执行

在实际开发中由于项目部署在分布式或集群服务器上 会导致定时任务多次触发

因此,使用redis分布锁机制可以有效避免多次执行定时任务

核心方法是org.springframework.data.redis.core包下的

setIfAbsent() 方法 返回值为布尔类型

方法类似redis的SETNX命令 即”SET if Not Exists”

服务器在执行邮件定时发送任务之前会向redis缓存中写入lock_key即任务锁 表明此服务器正在执行定时任务

另一台服务器在写入锁时 由于锁已经存在就不做任何操作

执行定时任务的服务器在执行完成后需释放任务锁

@Scheduled(cron = "${scheduled.cron}")public void scheduler(){try {if (redisUtil.get("key") == null) {  if(redisUtil.setScheduler("key", "value")){//定时任务执行代码Thread.sleep(3000);}}} catch (InterruptedException e) {logger.error("定时任务异常");}finally{redisUtil.remove("key");}}

RedisUtils.java

public boolean setScheduler(final String key, Object value) {boolean result = false;try {ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();return operations.setIfAbsent(key, value);} catch (Exception e) {e.printStackTrace();}return result;}

集群服务器下使用SpringBoot @Scheduled注解定时任务相关推荐

  1. 如何访问集群中指定的服务器,【Nacos源码之配置管理 六】集群模式下服务器之间是如何互相感知的...

    前言 我们用Nacos当配置中心的时候,上一篇文章中 [Nacos源码之配置管理 五]为什么把配置文件Dump到磁盘中 知道了,所有的配置文件都会Dump到服务器的本地磁盘中, 那么集群模式下: 服务 ...

  2. 集群空间服务器接收不到消息,解决Redis集群条件下键空间通知服务器接收不到消息的问题...

    解决Redis集群条件下键空间通知服务器接收不到消息的问题 键空间通知介绍 键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件. 可以通过对redis的 ...

  3. 服务器集群环境下session的共享问题

    一,集群和分布式的区别 在进入今天的正题之前,对服务器集群和分布式服务器这两个概念进行简要说明. 服务器集群:服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器. ...

  4. quartz在集群环境下的最终解决方案

    在集群环境下,大家会碰到一直困扰的问题,即多个 APP 下如何用 quartz 协调处理自动化 JOB . 大家想象一下,现在有 A , B , C3 台机器同时作为集群服务器对外统一提供 SERVI ...

  5. 服务器查看不到集群信息,集群服务器查看内存

    集群服务器查看内存 内容精选 换一换 用户可以查看在不同云服务区已经申请成功的专属云.进入指定的专属云,还可以查看该专属云内专属计算资源详情及云服务器等专属云内基础服务的实例信息.登录管理控制台.单击 ...

  6. arm云教室服务器_成都凌点科技告诉你ARM集群服务器适合的应用场景有哪些

    1 什么是高密度ARM集群服务器 ARM集群服务器,是在一个机箱内设计N个高性能ARM处理器,每个ARM处理器配置独立的内存及存储,所有的处理器通过高速网络(千兆或万兆网络)进行相互之间以及对外通信的 ...

  7. 分布式集群环境下,如何实现session共享三(环境搭建)

    这是分布式集群环境下,如何实现session共享系列的第三篇.在上一篇:分布式集群环境下,如何实现session共享二(项目开发)中,准备好了一个通过原生态的servlet操作session的案例.本 ...

  8. Java技术分享:集群环境下的定时任务

    定时任务的实现方式有多种,例如JDK自带的Timer+TimerTask方式,Spring 3.0以后的调度任务(Scheduled Task),Quartz框架等. Timer+TimerTask是 ...

  9. nc 模拟服务器_NC集群服务器使用详解

    NC 集群服务器使用详解 NC220 发版时,对中间件做了一项重大改进,对集群服务器应用提供了全面解决方案 的支持, 使产品更加能够适应集团企业的大规模应用. 本文力争以通俗的语言, 描述集群服 务器 ...

最新文章

  1. JAVA黑白圆圈图形_CSS3 黑白交替旋转圆圈
  2. C# ICSharpCode.SharpZipLib.Zip 的使用
  3. 软考考试仅剩几天,如何冲刺?
  4. Linkis生产部署服务器配置参考指南
  5. python短视频自动制作_Python 带你一键生成朋友圈超火的九宫格短视频
  6. LeetCode-46. Permutations
  7. Linux执行命令提示Password,linux expect远程自动登录以及执行命令
  8. 对象流 ObjectInputStream java
  9. 如何实现一个楼中楼的评论系统
  10. [转 js] 分析JsUnit
  11. C语言基础篇,什么是封装,附代码!
  12. win7动态壁纸_电脑桌面美化,高清动态壁纸
  13. char **p作为参数被修改_opencv第1课-加载、修改、保存图像
  14. 初级商业数字营销师超级推荐
  15. 禁用的灰色文本框、按钮的克星
  16. WordPress小程序搭建之免费开源小程序
  17. 计算机磁盘文件怎么加密,怎么加密磁盘-文件夹加密超级大师加密磁盘的方法 - 河东软件园...
  18. lpx寒假作业案例10
  19. 【github】论怎么去写一个高大上的ReadMe
  20. Libero设计流程

热门文章

  1. Qt那些事0.0.2
  2. 三:Java+SpringBoot框架使用(携带cookies信息访问的get接口开发)
  3. python接口自动化(二十六)--批量执行用例 discover(详解)
  4. 安装GPUtil包过程
  5. 实战中的Agile开发
  6. Teamcenter 入门开发系列问答(4)
  7. Eclipse环境下 spring MVC 入门实例
  8. Ordering Tasks UVA - 10305(拓扑排序)
  9. I2C通信读写数据过程
  10. Hutool 工具类