博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XXL之整合SpringBoot
阅读量:3712 次
发布时间:2019-05-21

本文共 5961 字,大约阅读时间需要 19 分钟。

一、xxl-job-admin

①执行数据库脚本tables_xxl_job.sql,生成库表

②通过nginx为调度中心集群做负载均衡,分别启动8001和8002端口的xxl-job-admin实例,建议修改xxl-job-admin的打包方式,将配置文件application.properties从jar包中剥离出来,方便修改配置

application.properties

### webserver.port=8001server.context-path=/xxl-job-admin### resourcesspring.mvc.static-path-pattern=/static/**spring.resources.static-locations=classpath:/static/### freemarkerspring.freemarker.templateLoaderPath=classpath:/templates/spring.freemarker.suffix=.ftlspring.freemarker.charset=UTF-8spring.freemarker.request-context-attribute=requestspring.freemarker.settings.number_format=0.############# mybatismybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml### xxl-job, datasourcespring.datasource.url=jdbc:mysql://192.168.124.129:3306/xxl-job?Unicode=true&characterEncoding=UTF-8spring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.type=org.apache.tomcat.jdbc.pool.DataSourcespring.datasource.tomcat.max-wait=10000spring.datasource.tomcat.max-active=30spring.datasource.tomcat.test-on-borrow=true### xxl-job emailspring.mail.host=smtp.qq.comspring.mail.port=25spring.mail.username=xxxxxx@qq.com###填的是SMTP授权码,不是邮箱密码spring.mail.password=xxxxxxspring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.smtp.starttls.enable=truespring.mail.properties.mail.smtp.starttls.required=true### xxl-job loginxxl.job.login.username=adminxxl.job.login.password=123456### xxl-job, access tokenxxl.job.accessToken=myAccessToken### xxl-job, i18n (default empty as chinese, "en" as english)xxl.job.i18n=

③配置并启动Nginx

http {       upstream xxl{	 server 192.168.124.129:8001;         server 192.168.124.129:8002;    }    server{        listen       8088;         location / {            proxy_pass  http://xxl;        }    }}

③成功后,我们可以通过nginx来访问xxl-job-admin集群了

http://192.168.124.129:8088/xxl-job-admin

配置执行器和任务

路由策略置为轮询,cron表达式设置为每五秒调度一次

二 、执行器项目

新建执行器项目XXL-Task,pom.xml文件引入依赖,似乎存在与SpringBoot版本不兼容的情况,启动会报异常,此处采用的SpringBoot版本为1.5.18.RELEASE

org.springframework.boot
spring-boot-starter-parent
1.5.18.RELEASE
com.xuxueli
xxl-job-core
2.0.1

application.properties文件(Appname类比MQ的Group)

server.port=9001#xxl-job调度中心工程的地址xxl.job.admin.addresses=http://192.168.124.129:8088/xxl-job-admin #xxl-job executorxxl.job.executor.appname=testAppNamexxl.job.executor.ip=xxl.job.executor.port=9999#xxl-job log path xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler#xxl-job, access token xxl.job.accessToken=myAccessToken#执行器Log文件定期清理功能,指定日志保存天数,日志文件过期自动删除。限制至少保持3天,否则功能不生效xxl.job.executor.logretentiondays=-1

XxlJobConfig

package com.yj.config;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;@Configuration@ComponentScan(basePackages = "com.yj.handler")public class XxlJobConfig {	@Value("${xxl.job.admin.addresses}")	private String adminAddresses;	@Value("${xxl.job.executor.appname}")	private String appName;	@Value("${xxl.job.executor.ip}")	private String ip;	@Value("${xxl.job.executor.port}")	private int port;	@Value("${xxl.job.accessToken}")	private String accessToken;	@Value("${xxl.job.executor.logpath}")	private String logPath;	@Value("${xxl.job.executor.logretentiondays}")	private int logRetentionDays;	@Bean(initMethod = "start", destroyMethod = "destroy")	public 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;	}}

MyJobHandler

package com.yj.handler;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;import com.xxl.job.core.biz.model.ReturnT;import com.xxl.job.core.handler.IJobHandler;import com.xxl.job.core.handler.annotation.JobHandler;import com.xxl.job.core.log.XxlJobLogger;@JobHandler(value = "myJobHandler")@Componentpublic class MyJobHandler extends IJobHandler {		private static final Logger log = LoggerFactory.getLogger(MyJobHandler.class);	@Value("${server.port}")	private String port;		@Override	public ReturnT
execute(String param) throws Exception { XxlJobLogger.log("Hello World,port:"+port); log.info("Hello World,port:"+port); return SUCCESS; }}

分别启动server.port=9001,9002端口的执行器实例,其中,xxl.job.executor.port=9999,9998,xxl.job.executor.appname都为testAppName

启动后在xxl-job-admin控制台(有点类似Eureka)已经能看到注册成功的执行器实例了

 查看执行器控制台日志,发现xxl-job-admin对9001和9002的XXL-Task项目进行了负载均衡的调度(类比MQ集群模式)

15:00:53.254 logback [Thread-28] INFO  com.yj.handler.MyJobHandler - Hello World,port:900215:00:58.284 logback [Thread-16] INFO  com.yj.handler.MyJobHandler - Hello World,port:900115:01:03.261 logback [Thread-28] INFO  com.yj.handler.MyJobHandler - Hello World,port:9002

我们再将路由策略置为分片广播的模式(类比MQ广播模式)

15:14:43.277 logback [Thread-28] INFO  com.yj.handler.MyJobHandler - Hello World,port:900215:14:48.281 logback [Thread-28] INFO  com.yj.handler.MyJobHandler - Hello World,port:900215:14:53.264 logback [Thread-28] INFO  com.yj.handler.MyJobHandler - Hello World,port:900215:14:43.343 logback [Thread-26] INFO  com.yj.handler.MyJobHandler - Hello World,port:900115:14:48.299 logback [Thread-26] INFO  com.yj.handler.MyJobHandler - Hello World,port:900115:14:53.340 logback [Thread-26] INFO  com.yj.handler.MyJobHandler - Hello World,port:9001

我们再验证下邮件的报警功能,在执行器任务中抛出一个异常int i=1/0,会收到告警邮件

转载地址:http://fvsjn.baihongyu.com/

你可能感兴趣的文章
图象的骨架提取算法
查看>>
NAT原理与NAT穿透
查看>>
C语言——学生成绩管理系统
查看>>
二分法查数字
查看>>
Git的安装和Github的使用
查看>>
五子棋
查看>>
插入排序
查看>>
litepal
查看>>
铁轨(Rails,UVa 514)
查看>>
矩阵链乘 Matrix Chain Multiplication Uva442
查看>>
Fence Repair(修理栅栏 POJ 3253 普通方法和优先队列解决法)
查看>>
第十一届蓝桥杯大赛第二次模拟(软件类)真题
查看>>
Linux 编译环境 之 编译安装世界上最好的语言PHP
查看>>
解决Eclipse部署Web项目在Tomcat Webapps 目录中找不到
查看>>
解决将Editplus添加到鼠标右键的问题
查看>>
编译原理:语法分析实验(LR分析法)
查看>>
栈的链式存储结构(带头结点的单链表实现)
查看>>
十进制数转为二进制(java实现)
查看>>
栈的应用----括号匹配问题
查看>>
串的模式匹配算法(KMP算法,BF算法+算法详解+实现代码)
查看>>