定时任务及分布式定时任务注意事项
一、定时任务默认是阻塞的
定时任务默认是阻塞的, 即串行执行,若一个服务配置多个定时任务,需要等上一个定时任务执行完,才能执行下一个定时任务
一个定时任务超长了,也不应该阻塞其他定时任务的执行。如一个定时任务每秒执行,而业务执行时间是5秒,那么会隔5秒等待业务执行完毕才会继续下一个定时任务。当前定时任务阻塞后,下一个定时任务得不到执行。
解决方案
- 让业务运行以异步的方式,自己提交到线程池
CompletableFuture.runAsync(()->{xxxxService.hello();
},executor);
- SpringBoot支持定时任务线程池。默认情况定时任务自动配置的线程数量为1。直接更改配置文件的配置(经常失效)
spring.task.scheduling.pool.size=5
- 让定时任务异步执行
在类上加@EnableAsync
。在定时方法上标上注解@Async
解决:使用异步+定时任务来完成定时任务不阻塞的功能
二、分布式定时任务需要解决的问题
服务有定时任务,当服务部署到多个节点时,每个节点在同一个时间点都会执行相同的定时任务,需要做的是,让同一个时间点,每一个定时任务只在一个节点上执行。
给定时任务加一个分布式锁,再在业务代码里面加上关于幂等的逻辑判断。
定时任务及分布式定时任务注意事项相关推荐
- 浅谈传统定时任务和分布式定时任务
为什么用定时任务? 定时任务平台可以在后台自动检测数据并进行操作.主要应用在订单状态改变.后台统计.定时发送邮件或短信等. 定时任务怎么部署实现? 传统的定时任务可以通过可定时线程池.timertas ...
- java 项目初始化一个定时任务_elastic-job 分布式定时任务框架 在 SpringBoot 中如何使用(一)初始化任务并定时执行...
第一篇需要实现一个最简单的需求:某个任务定时执行,多台机子只让其中一台机子执行任务 一.安装 分布式应用程序协调服务 zookeeper,安装步骤在链接里面 二.在springboot项目中引入 el ...
- 几种主流的分布式定时任务,你知道哪些?
欢迎关注方志朋的博客,回复"666"获面试宝典 单点定时任务 JDK原生 自从JDK1.5之后,提供了ScheduledExecutorService代替TimerTask来执行定 ...
- quartz 分布式_6大分布式定时任务对比
作者 | sharedCode 来源 | blog.csdn.net/u012394095/article/details/79470904 分布式定时任务简介 把分散的,可靠性差的计划任务纳入统一的 ...
- 【解决方案】分布式定时任务解决方案
[解决方案]分布式定时任务解决方案 参考文章: (1)[解决方案]分布式定时任务解决方案 (2)https://www.cnblogs.com/fonxian/p/10858101.html 备忘一下 ...
- 聊聊分布式定时任务中间件架构及其实现--转
原文来自微信公众号:聊聊架构 在互联网应用中,各式各样的定时任务存于系统各个角落.我们希望由一个平台统一将这些作业管理起来.通过这个系统,作业的宕机.崩溃等状态就可收入运维同学掌控,直接对接报警系统, ...
- 3分钟掌握Quartz.net分布式定时任务的姿势
长话短说,今天聊一聊分布式定时任务,我的流水账笔记: ASP.NET Core+Quartz.Net实现web定时任务 AspNetCore结合Redis实践消息队列 细心朋友稍一分析,就知道还有问题 ...
- 6大分布式定时任务对比
作者 | sharedCode 来源 | blog.csdn.net/u012394095/article/details/79470904 分布式定时任务简介 把分散的,可靠性差的计划任务纳入统一的 ...
- 基于spring+quartz的分布式定时任务框架
http://www.cnblogs.com/aaronfeng/p/5537177.html 问题背景 我公司是一个快速发展的创业公司,目前有200人,主要业务是旅游和酒店相关的,应用迭代更新周期比 ...
- 【redis】分布式锁实现,与分布式定时任务
如果你还不知道redis的基本命令与基本使用方法,请看 [redis]redis基础命令学习集合 写在前面 redis辣么多数据结构,这么多命令,具体一点,都可以应用在什么场景呢?用来解决什么具体的问 ...
最新文章
- HP笔记本 CQ41全系列系统解决方案
- linux c send recv MSG_NOSIGNAL参数
- android init(system/core/init/init.c)分析
- zip,tar,打包并压缩
- boost::contract模块实现虚拟可选结果的测试程序
- php 可以动态的new一个变量类名
- Netty完成网络通信(二)
- 前端学习(3234):react生命周期1
- 多浏览器下,CSS截断功能。
- 开源要安全!Linux 基金会、GitHub、GitLab、Google 联合起来了!
- ESFramework Demo -- 简单的网络硬盘Demo
- ab753变频器参数怎么拷贝到面板_20款常用变频器密码,想成为电工老师傅你一定需要,纯干货分享!...
- DSP 程序远程升级 / Bootloader设计指南(五)—— FLASH擦写操作
- BZOJ 4199: [Noi2015]品酒大会/UOJ #131. 【NOI2015】品酒大会 后缀自动机 树形dp / 后缀数组 单调栈
- 数学建模常用算法:人工鱼群算法(AFAS)求解二元函数最小值+限定x,y范围测试【java实现--详细注释+Matlab绘制小鱼游动过程】
- 一篇文章带你搞定 create connection SQLException, url: jdbc:mysql://10.15.16.63:3306/restful, errorCode 1130
- 高数————思维导图(上岸必备)(极限与连续)
- phpmailer 使用
- Python学习案例2——数独解题及出题程序
- 安装jupyter步骤