一、xxl-job简介
抄一段
XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
maven依赖
<!-- xxl-job-core -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>${project.parent.version}</version>
</dependency>
原文档链接xxl-job使用文档
二、搭建任务调度中心平台
1、github上下载xxl-job项目源代码下载地址
2、运行sql脚本文件创建项目库表
3、修改调度中心application.properties部分设置,不改也行,注意数据库用户名密码
### web
#调度中心平台端口
server.port=8989
#名称
server.context-path=/xxl-job-admin
### resources
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static/
### freemarker
spring.freemarker.templateLoaderPath=classpath:/templates/
spring.freemarker.suffix=.ftl
spring.freemarker.charset=UTF-8
spring.freemarker.request-context-attribute=request
spring.freemarker.settings.number_format=0.##########
### mybatis
mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
### xxl-job, datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
spring.datasource.tomcat.max-wait=10000
spring.datasource.tomcat.max-active=30
spring.datasource.tomcat.test-on-borrow=true
spring.datasource.tomcat.validation-query=SELECT 1
spring.datasource.tomcat.validation-interval=30000
### xxl-job email
spring.mail.host=smtp.qq.com
spring.mail.port=25
[email protected]
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
### xxl-job, access token
xxl.job.accessToken=
### xxl-job, i18n (default empty as chinese, "en" as english)
xxl.job.i18n=
4、执行入口类启动项目
5、浏览器访问项目
默认账户 admin 密码 123456
登录
在此界面可以看到任务数量和执行器数量
任务: 相当于
@Component //或者@WebListener
public class BrithdayListener implements ServletContextListener {
@Autowired
private MailService mailService;
@Override
public void contextInitialized(ServletContextEvent sce) {
Timer timer = new Timer();
// 定时器任务 延时时间 间隔时间
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// 可以查询数据库看今天谁生日 设置一天查一次 遍历集合 循环发送邮件给他们
mailService.send("[email protected]","生日祝福","测试,生日快乐啊");
}
},100000,300000);
}
}
Timer中的 new TimerTask()
执行器: 我们的任务所在的项目
三、执行器
1、github上下载的源代码中包含各种执行器实例项目
本人使用springboot版
由于我更改了调度中心项目的端口
此处应该写上调度中心的访问路径
xxl.job.executor.appname 为执行器的名称
调度任务: 继承IJobHandler接口,实现execute方法:
这在示例项目中写的一清二楚
2、启动示例项目
执行示例项目入口类
正常启动即可
四、调度中心管理执行器、调度任务
1、进入调度中心平台新增执行器
AppName 示例项目名称
注册方式 手动自动都行 手动需要自己去输入执行器项目访问路径
分布式项目下可以将模块集群的路径加入进来采用轮询方式调度执行器
保存即可
2、新增任务
任务管理界面 新增任务
cron表达式来指定执行时间 这里设置每小时执行一次 保存
点击启动 启动任务 每小时自动调度一次
点击执行 立即执行任务 查看调度日志 成功
查看执行日志
excute方法被执行
到此xxl-job搭建就成功了,使用很简单方便
五、展望
个人觉得xxl-job使用非常方便,平台搭建也十分简单,跟着文档轻松上手。想写一个job只需要继承IJobHandler 实现excute方法即可,调度中心可视化操作非常方便。发邮件只需将之前写的发送邮件代码在excute方法中调用即可,至于在什么场景下发送视业务需求来写即可。可以将相同的模块代码部署在不同的服务器上,只需向调度中心注册服务器地址。