Job Scheduling简介
定时任务,不陌生。
一、JDK 原生
java.util.Timer
1. 提供了API 用来提交任务
2.使用while 循环来执行 任务
3. 任务保存在数组中,如果没有任务执行,则 wait
java.util.TimerTask
一个抽象 线程类,用来保证 任务
示例:
Timer timer = new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {System.out.printf("TimerTask exe:"+Thread.currentThread().getName());}}, 0, 10 * 1000); // 单位是毫秒
二. Spring 提供的 定时任务
只需要在 方法上加上
@Scheduled
注解,就OK了。 这个用起来非常便捷。
org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration
在spring boot 项目启动时,这个类会 创建 必要的bean。
org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler
会创建一个 ScheduledExecutorService
org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor
后置处理器:
1. 处理 Scheduled 注解的方法
2. 使用 ScheduledExecutorService 执行 task
注意:
线程池默认是 1 个线程,如果要增加线程池个数,可以用配置:
spring.task.scheduling.pool.size
三. xxl-job
https://github.com/xuxueli/xxl-job.git/
1. xxl-job 有一个控制台,需要部署之后,用来注册Job。 需要使用到 mysql 数据库
2. 具体的Job 方法写完之后,spring boot项目 使用
@XxlJob
注解标识这个方法,就OK了,也不复杂。
1. 控制台部署
xxljob 依赖 数据库 保存 job的数据信息,所以 首先需要 建库建表。所需要的建表语句 再源码包中已经提供。
数据库配置完成后,直接 部署 控制服务就可以了。就是一个 spring boot 的应用。
默认用户名密码: admin/123456
2. 应用配置
1. 引入依赖包:
<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId></dependency>
2. 配置 属性
xxl:job:accessToken: default_tokenadmin:addresses: http://127.0.0.1:8080/xxl-job-adminexecutor:address: ''appname: xxl-job-executor-sampleip: ''logpath: /data/applogs/xxl-job/jobhandlerlogretentiondays: 30port: 9999
3. 添加 注册器bean
@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appname);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}
配置完后,可以开始编写任务:
@XxlJob("doLoadJob")public void doLoadJob(){System.out.printf("doLoadJob");}
功能点:
1. 服务启动后,自动向 控制台注册自己的 地址
2. 控制台注册 任务时,可以选择一种路由策略: 分片广播
分片广播的原理:
拿到 注册的所有的 服务IP,遍历执行 http请求。
对于分片广播,需要 再编写 Job时,完成 分片处理。xxlJob 不会给你的任务做分片,它只是 触发每台服务执行一下任务而已。
对于分片方法,可以自己定义:
任务数%机器数 == 当前机器编号 时,执行
3. 服务接收到任务请求后,会把任务 放在队列中,由 其他的线程异步执行。
四.Quartz
官网:
http://www.quartz-scheduler.org/
在编写代码时,稍微复杂一下,需要实现Job接口,创建 JobDetail、Trigger、Scheduler 等来协助完成调度你的任务。
五、Elastic-Job
需要用到 zookeeper来协助完成。目前为止没有用过。
Job Scheduling简介相关推荐
- sparkcore分区_Spark学习:Spark源码和调优简介 Spark Core (二)
本文基于 Spark 2.4.4 版本的源码,试图分析其 Core 模块的部分实现原理,其中如有错误,请指正.为了简化论述,将部分细节放到了源码中作为注释,因此正文中是主要内容. 第一部分内容见: S ...
- 大连理工计算机专业导师,大连理工大学计算机科学与技术学院研究生导师简介-申彦明...
大连理工大学计算机科学与技术学院研究生导师简介-申彦明大连理工大学 免费考研网/2016-05-04 申彦明院系:计算机科学与技术学院 办公电话:无 电子信箱:shen@dlut.edu.cn 更新时 ...
- Spring boot定时任务(Scheduling Tasks)
定时任务(Scheduling Tasks) 这篇文章将介绍怎么通过spring去做调度任务. 简介 定时任务或者说定时调度,是系统中比较普遍的一个功能,例如数据归档.清理,数据定时同步(非实时),定 ...
- hls fifo_【正点原子FPGA连载】第一章HLS简介--领航者ZYNQ之HLS 开发指南
1)摘自[正点原子]领航者ZYNQ之HLS 开发指南 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手 ...
- CNN结构:MXNet设计和实现简介
对原文有大量修改,如有疑惑,请移步原文. 参考链接:MXNet设计和实现简介 文章翻译于:https://mxnet.incubator.apache.org/architecture/index.h ...
- 六款值得推荐的Android开源框架简介
六款值得推荐的Android开源框架简介 技术不再多,知道一些常用的.不错的就够了.下面就是最近整理的"性价比"比较高的Android开源框架,应该是相对实用的. 1.volley ...
- 爬虫基础(五)-----scrapy框架简介
---------------------------------------------------摆脱穷人思维 <五> :拓展自己的视野,适当做一些眼前''无用''的事情,防止进入只关 ...
- Quartz简介及应用场景
Quartz简介及应用场景 1. Quartz介绍 核心类介绍 简单触发器 创建一个Quartz项目 pom导入: 入门级案例 最终执行,是没6秒指定一次,自行三次,触发器设定的. 表达式触发器 表达 ...
- 【Vitis Accel】1 - HLS 简介
目录 HLS 简介 1. 工作过程 1.1 Scheduling 部署 1.2 Binding 捆绑 1.3 Control logic extraction 控制逻辑提取 2. 综合过程 3. 性能 ...
最新文章
- 算法基础(09)— 字符串常用操作
- 面试热点Redis分布式锁,再细说一次
- springMVC参数传递(三)
- go网站服务器搭建,使用Go搭建服务器记录(一)
- java中测试计算能力_这 10 道 Java 测试题,据说阿里 P7 的正确率只有 50%
- 计算机重启是什么原因,电脑自动重启,该怎么办,到底是什么原因,我来详细说明?...
- EJB Remote/Local 绑定和JNDI Lookup
- PCDN实现flash无延时直播的技术原理与优点 1
- Shell中通过机器人发送钉钉群消息
- Oracle 开放源代码项目
- .Net读取Excel的数据类型不统一获取空值问题
- 苹果智能家居的未来之路
- Sublime Text格式化SQL
- NeoKylin Linux Advanced Server release 6.0 安装及卸载达梦7入门操作
- C++课后作业 10.教材习题7_6:哺乳动物类Mammal派生出狗类Dog
- 序列化(boost serialization)
- arduino系列教程之触摸开关(外部中断)开关小灯led
- 社群运营,日常社群管理有哪些要点?
- 联想小新 Pro 16 2023 评测
- 智慧工厂之化工厂人员定位系统,工厂实时定位,视频联动-新导智能