下载地址:https://gitee.com/xuxueli0323/xxl-job
访问地址:http://localhost:8080/xxl-job-admin/ 账号:admin 密码:123456.
我们部署的是调度器管理平台,执行器就是我们实际开发的应用系统:比如:会员系统、订单系统、结算系统等等;执行器管理可以对每一个注册上来的执行器进行管理(编辑、删除执行器等)。
我们应用系统都会有自己特定的job任务:比如:会员系统定时拉取一些会员推送模板消息、短信消息;结算系统定时生成结算任务、报表等。任务管理可根据具体的执行器、job任务名称(JobHandler)、任务描述等进行筛选;可新增任务、启动任务、执行任务、查询调度日志,功能比较丰富。
用户管理可根据角色(普通用户、管理员)进行管理:新增用户、删除用户。
在调度日志模块可查询我们执行任务时的具体情况,可根据具体的执行器、任务名称、执行状态进行筛选(成功、失败、进行中),对于进行中的任务可手动终止;调度备注列可查看调度详情,比如:我们的任务被调度到哪一台机器、调度的结果码、结果信息等等。
运行报表是对调度平台中执行器数、任务数、调度次数、调度明细(成功、失败)数据的汇总统计。
看到此处,想必大家心中对xxl-job已经有了一些初步的了解和感受,摩拳擦掌,趁热打铁,下面我们新建一个结算系统应用,注册到调度平台,并新建一个月结任务,测试下吧。
<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.3.1</version></dependency>
#xxljob config#调度器地址xxl.job.admin.addresses = http://127.0.0.1:8080/xxl-job-admin#鉴权用暂无xxl.job.accessToken =#执行器名称(就是我们的业务系统) xxl.job.executor.appname = settle-system#执行器地址和ip,demo案例无需填写xxl.job.executor.address =xxl.job.executor.ip =#执行器端口:默认值:9999xxl.job.executor.port = 9999#日志路径xxl.job.executor.logpath = D://tmp//log#日志清理时间xxl.job.executor.logretentiondays = 30
import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.annotation.Bean;import org.springframework.beans.factory.annotation.Value;import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;import org.springframework.context.annotation.Configuration;@Configurationpublic class XxlJobConfig { private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class); @Value("${xxl.job.admin.addresses}") private String adminAddresses; @Value("${xxl.job.accessToken}") private String accessToken; @Value("${xxl.job.executor.appname}") private String appname; @Value("${xxl.job.executor.address}") private String address; @Value("${xxl.job.executor.ip}") private String ip; @Value("${xxl.job.executor.port}") private int port; @Value("${xxl.job.executor.logpath}") private String logPath; @Value("${xxl.job.executor.logretentiondays}") private int logRetentionDays; @Bean public XxlJobSpringExecutor xxlJobExecutor() { logger.info(">>>>>>>>>>> xxl-job config init."); XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses(adminAddresses); xxlJobSpringExecutor.setAppname(appname); xxlJobSpringExecutor.setAddress(address); xxlJobSpringExecutor.setIp(ip); xxlJobSpringExecutor.setPort(port); xxlJobSpringExecutor.setAccessToken(accessToken); xxlJobSpringExecutor.setLogPath(logPath); xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); return xxlJobSpringExecutor; }
import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Component;import com.xxl.job.core.handler.annotation.XxlJob;@Componentpublic class MonthlySettlementJobHandler { private static Logger logger = LoggerFactory.getLogger(MonthlySettlementJobHandler.class); // 使用@XxlJob注解,将monthlySettlementJobHandler任务注册到调度平台 @XxlJob("monthlySettlementJobHandler") public void monthlySettlementJobHandler(String param) throws InterruptedException { try { logger.info("结算系统-月结任务执行 参数: {}", param); } catch (Exception e) { logger.error("结算系统-月结任务执行 异常 参数: {} 异常信息: ", param, e); } }}
结算系统执行器代码编写完毕,启动成功后,就需要去调度器管理平台新建我们的执行器、以及我们的job任务了。
新建完毕之后,在列表页面具体的执行器了,点击OnLine 机器地址,可查看执行器的ip和端口。
点击:操作--》执行一次--》根据实际情况填写job参数--》机器地址无需填写。
执行后,去结算系统查看日志,会有相应业务日志输出。
再回到调度平台,点击:操作--》查询日志--》可看到调度时间、调度结果等等。
从调度平台部署、到业务应用系统(结算系统)对接调度平台、编写月结job任务,总体流程大家应该都比较清晰了,是不是觉得还挺简单的,会不会又有些疑问,对接步骤这么简洁,其背后的原理究竟是什么?
本文链接:http://www.28at.com/showinfo-26-17561-0.htmlSpringboot集成分布式任务调度系统XXl-Job(调度器和执行器)
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com