官网|代码
-
官网网址:https://www.xuxueli.com/xxl-job/
首先:文档很详细,非常清晰,集成到项目中也非常简单
- 进入官网后下拉就是文档
- 按文档一步步一般没有问题,主要说下可能会疑惑的点
- 直接点击 1.5在gitee下载代码 : http://gitee.com/xuxueli0323/xxl-job
-
代码结构如下:
-
以上我们只需要关注我选的这三个(主流现在就是springboot这种,springcloud不也是吗,以默认为主,自定义东西后续想改自己去改)
tables_xxl_job.sql
拿去数据库执行一下,会生成需要的数据库和表
xxl-job-admin 调度中心
启动调度中心(与我们的项目代码分离,低耦合 ) ,如端口是8080
server.port=8080
server.servlet.context-path=/xxl-job-admin
访问地址 http://localhost:8080/xxl-job-admin/
初始密码 admin 123456
至此。我们已经成功访问到调度中心,先别着急,继续看
- xxl-job-core xxl-job的核心依赖,不需要关注,我们以Maven依赖拿到了
xxl-job-executor-sample-springboot 执行器
这是给我们需要的示例代码
-
XxlJobConfig 配置类默认就是好的
-
SampleXxlJob 示例方法,一般都是bean模式
/** * 1、简单任务示例(Bean模式) */ @XxlJob("demoJobHandler") public void demoJobHandler() throws Exception { XxlJobHelper.log("XXL-JOB, Hello World."); for (int i = 0; i < 5; i++) { XxlJobHelper.log("beat at:" + i); TimeUnit.SECONDS.sleep(2); } // default success }
-
XxlJobExecutorApplication 启动类
-
一样的不说了,主要还是application.properties配置文件
server.port=8081 xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin xxl.job.executor.appname=xxl-job-executor-sample //端口 //addresses就是刚才启动的调度中心地址 //appname先默认,后续说 //主要是这几个,其他会默认分配
-
启动执行器:XxlJobExecutorApplication.java
调度过程
-
页面
-
运行报表:展示页面,略过,自己看看
-
执行器管理: 不是集成项目就只需一个执行器,这里的AppName必须和我们前面在执行器中定义的一样,名称自定义就行,我们改完就可以在任务管理选择执行器(因为非集成项目默认一个就可)
-
任务管理: 我们定义的自动任务
新增:注意JobHandler,
操作:里面执行一次测试一下ok不,其他自己点点看
报警邮件又想试试吧
比如QQ邮箱,username和from写自己都写自己QQ,password写你QQ的授权码(登录QQ邮箱网页设置|账号与安全-安全设置-生成授权码),如下在调度中心设置一下就行
### xxl-job, email spring.mail.host=smtp.qq.com spring.mail.port=25 spring.mail.username=你的QQ号@qq.com spring.mail.from=你的QQ号@qq.com spring.mail.password=你的QQ授权码 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.executor.appname=xxl-job-executor-sample
//自定义
-
整合到自己的项目
-
首先看完以上你应该有意识到上述代码中只有xxl-job-admin才是调度中心,xxl-job-core只是核心依赖,xxl-job-executor-sample执行器下两个模块也只是示例代码,
-
实际项目整合的时候整合是xxl-job的执行器(也就是示例代码中的),我们把前面示例代码xxl-job-executor-sample-springboot模块(执行器)整合到项目中
-
在对应的pom.xml加上xxl-job的依赖
<!-- xxl-job-core --> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.3.1</version> </dependency>
这其中我只遇到了这一个问题:实际项目和调度中心没有连上
调度中心和我们项目中的xxl-job-core版本要一致才对
因为我们拉下来的代码版本都是snapshot快照版本的例如
<version>2.4.2-SNAPSHOT</version>
这就可能会有问题
所以可以如上换成一个稳定版本如2.3.1,
这里改了后需要去调度中心将它的版本也改为2.3.1
-
将它下面的配置类XxlJobConfig.java放到我们配置包里面(这个不要费脑筋我要放到那个模块下那个位置啊,都行,这不一般都有个config包习惯放着,或者你实际建的包)
-
在你的配置类中加上,注意addresses是你调度中心地址,appname定义后,在调度中心-执行器管理-那个appname要和这个一样,其他不需改,空的都是默认的(等你后面看几次就知道了,自动搞好的,没影响),日志位置想改自己改吧
那个不是properties吗,实际项目不都是yml,你要真是properties,那在示例properties对应直接复制过去就行了
xxl: job: admin: addresses: http://127.0.0.1:8080/xxl-job-admin accessToken: default_token executor: appname: xxl-job-executor address: ip: port: 9999 logpath: /data/applogs/xxl-job/jobhandler logretentiondays: 30
-
好了已经整合好了,写实际业务代码吧,它的示例代码SampleXxlJob.java一样的东西,你自己建个业务类,有多少个自动任务就建多少 @XxlJob(“xxx”)方法,如下:
@Component public class YorName { private static Logger logger = LoggerFactory.getLogger(YorName.class); @XxlJob("demoJobHandler") public void demoJobHandler() throws Exception { XxlJobHelper.log("XXL-JOB, Hello World."); for (int i = 0; i < 5; i++) { XxlJobHelper.log("beat at:" + i); TimeUnit.SECONDS.sleep(2); } // default success } @XxlJob("test001") public void test001() throws Exception { //你的自动任务test001具体业务代码 logger.info("XXL-JOB, Hello World"); } @XxlJob("hhh") public void test002() throws Exception { /* * @XxlJob("hhh")和方法名test002没有关系,只是习惯一般一样, * @XxlJob("hhh")这个和你任务管理-JobHandler一致 * 你的自动任务test001 * @date: 2024/10/18 14:13 */ logger.info("XXL-JOB, Hello World123"); } }
-
至此,你已经成功在你的项目中集成xxl-job了,启动你的项目试一下吧
-
有其他需求看文档就行了,xxl-job官方文档写的看着是真舒服啊
-
如果有其他问题,可以留言互相学习
-
标签:执行器,Java,spring,调度,job,mail,xxl From: https://blog.csdn.net/THB66666/article/details/143053852