网站建设的分析,永久免费安卓代理ip,网站推广有哪些优势,影视广告宣传片制作公司【2023】XXL-Job 具体通过docker 配置安装容器#xff0c;再通过springboot执行注册实现 一、概述二、安装1、拉取镜像2、创建数据库3、创建容器并运行3、查看容器和日志4、打开网页 127.0.0.1:9051/xxl-job-admin/ 三、实现注册测试1、创建一个SpringBoot项目、添加依赖。2、… 【2023】XXL-Job 具体通过docker 配置安装容器再通过springboot执行注册实现 一、概述二、安装1、拉取镜像2、创建数据库3、创建容器并运行3、查看容器和日志4、打开网页 127.0.0.1:9051/xxl-job-admin/ 三、实现注册测试1、创建一个SpringBoot项目、添加依赖。2、添加配置2.1、添加yml2.2、添加配置类用于配置bean2.3、添加执行定时Handler 3、配置客户端4、结果日志输出 一、概述
在平时的业务场景中经常有一些场景需要使用定时任务比如
时间驱动的场景某个时间点发送优惠券发送短信等等。批量处理数据批量统计上个月的账单统计上个月销售数据等等。固定频率的场景每隔5分钟需要执行一次。
在Java中传统的定时任务实现方案比如TimerQuartz等都或多或少存在一些问题
不支持集群、不支持统计、没有管理平台、没有失败报警、没有监控等等
而且在现在分布式的架构中有一些场景需要分布式任务调度
同一个服务多个实例的任务存在互斥时需要统一的调度。任务调度需要支持高可用、监控、故障告警。需要统一管理和追踪各个服务节点任务调度的结果需要记录保存任务属性信息等。
显然传统的定时任务已经不满足现在的分布式架构所以需要一个分布式任务调度平台目前比较主流的是elasticjob和xxl-job。
二、安装
采用的是docker 进行安装
1、拉取镜像
ocker pull xuxueli/xxl-job-admin:2.3.02、创建数据库
从官网拉取tables_xxl_job.sql数据库表格丢到自己的mysql上去数据库地址
3、创建容器并运行
配置-e PARAMS的参数可以参照 官网 和在spring的.properties文件配置类似
如需自定义 mysql 等配置可通过 “-e PARAMS” 指定参数格式 PARAMS“–keyvalue --key2value2” 配置项参考文件/xxl-job/xxl-job-admin/src/main/resources/application.properties如需自定义 JVM内存参数 等配置可通过 “-e JAVA_OPTS” 指定参数格式 JAVA_OPTS“-Xmx512m”
//配置mysql参数
docker run -e PARAMS--server.port9051 --spring.datasource.urljdbc:mysql://192.168.0.146:3306/xxl_job?UnicodetruecharacterEncodingUTF-8 --spring.datasource.usernameroot --spring.datasource.password123456 -p 9051:9051 -v /tmp:/data/applogs --name xxl-job-admin -d xuxueli/xxl-job-admin:2.3.0!注意 mysql如果是也是部署在docker上的不要写成localhost或者127.0.0.1了要写ipusername和password需要是你数据库的地址xxl_job 是从官网拉取的数据库如果名字有改动也需要对应上且配置的中间不要有换行等空格符合 3、查看容器和日志 C:\Usersdocker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTSNAMES
2227fc303594 xuxueli/xxl-job-admin:2.3.0 sh -c java -jar $J… 17 minutes ago Up 17 minutes 0.0.0.0:9051-9051/tcpxxl-job-admin
7f6c94285299 consul docker-entrypoint.s… 2 months ago Exited (255) 2 months ago 8300-8302/tcp, 8301-8302/udp, 8600/tcp, 8600/udp, 0.0.0.0:8500-8500/tcp mysql8.0
740eb45a513d redis docker-entrypoint.s… 9 months ago Exited (0) 2 days agomyredis查看启动日志是否有问题最终success
C:\Usersdocker logs -t -f --tail 10f xxl-job-admin
2023-08-04T08:49:28.302253800Z
2023-08-04T08:49:28.302441500Z . ____ _ __ _ _
2023-08-04T08:49:28.302461700Z /\\ / ____ __ _ _(_)_ __ __ _ \ \ \ \
2023-08-04T08:49:28.302484200Z ( ( )\___ | _ | _| | _ \/ _ | \ \ \ \
2023-08-04T08:49:28.302499100Z \\/ ___)| |_)| | | | | || (_| | ) ) ) )
2023-08-04T08:49:28.302512600Z |____| .__|_| |_|_| |_\__, | / / / /
2023-08-04T08:49:28.302526000Z |_||___//_/_/_/
2023-08-04T08:49:28.306031900Z :: Spring Boot :: (v2.4.2)
2023-08-04T08:49:28.306065400Z
2023-08-04T08:49:28.438761800Z 16:49:28.434 logback [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_265 on 2227fc303594 with PID 7 (/app.jar started by root in /)
2023-08-04T08:49:28.440836200Z 16:49:28.440 logback [main] INFO c.x.job.admin.XxlJobAdminApplication - No active profile set, falling back to default profiles: default
2023-08-04T08:49:31.210036000Z 16:49:31.209 logback [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9051 (http)
2023-08-04T08:49:31.226888300Z 16:49:31.226 logback [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler [http-nio-9051]
2023-08-04T08:49:31.228067500Z 16:49:31.227 logback [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
2023-08-04T08:49:31.228668800Z 16:49:31.228 logback [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.41]
2023-08-04T08:49:31.302073600Z 16:49:31.301 logback [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
2023-08-04T08:49:31.302455100Z 16:49:31.302 logback [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 2408 ms
2023-08-04T08:49:32.422937800Z 16:49:32.422 logback [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - init xxl-job admin success.
2023-08-04T08:49:32.464778700Z 16:49:32.462 logback [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
2023-08-04T08:49:32.712904100Z 16:49:32.712 logback [main] INFO o.s.s.c.ThreadPoolTaskExecutor - Initializing ExecutorService applicationTaskExecutor
2023-08-04T08:49:32.931666500Z 16:49:32.931 logback [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
2023-08-04T08:49:33.198892600Z 16:49:33.198 logback [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
2023-08-04T08:49:33.854065100Z 16:49:33.853 logback [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 2 endpoint(s) beneath base path /actuator
2023-08-04T08:49:33.916699800Z 16:49:33.916 logback [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler [http-nio-9051]
2023-08-04T08:49:33.949473300Z 16:49:33.948 logback [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet dispatcherServlet
2023-08-04T08:49:33.949971100Z 16:49:33.949 logback [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet dispatcherServlet
2023-08-04T08:49:33.953091200Z 16:49:33.952 logback [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 2 ms
2023-08-04T08:49:33.956208900Z 16:49:33.955 logback [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9051 (http) with context path /xxl-job-admin
2023-08-04T08:49:33.987836700Z 16:49:33.986 logback [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 6.262 seconds (JVM running for 7.286)
2023-08-04T08:49:37.002114700Z 16:49:37.001 logback [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - init xxl-job admin scheduler success.4、打开网页 127.0.0.1:9051/xxl-job-admin/
默认账号/密码 admin/123456
三、实现注册测试
1、创建一个SpringBoot项目、添加依赖。
名字随意 添加依赖
dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependency!-- 官网的demo是2.2.1中央maven仓库还没有所以就用2.2.0 --groupIdcom.xuxueli/groupIdartifactIdxxl-job-core/artifactIdversion2.2.0/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependency
/dependencies2、添加配置
2.1、添加yml
server:port: 8080
spring:application:name: xxl-test01datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mycinema?serverTimezoneAsia/Shanghaiusername: rootpassword: 123456xxl:job:admin:### 调度中心部署根地址 [选填]如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行执行器心跳注册和任务结果回调为空则关闭自动注册addresses: http://localhost:9051/xxl-job-adminexecutor:### 执行器AppName [选填]执行器心跳注册分组依据为空则关闭自动注册appname: xxl-test01### 执行器IP [选填]默认为空表示自动获取IP多网卡时可手动设置指定IP该IP不会绑定Host仅作为通讯实用地址信息用于 执行器注册 和 调度中心请求并触发任务ip: 192.168.0.146### 执行器端口号 [选填]小于等于0则自动获取默认端口为9999单机部署多个执行器时注意要配置不同执行器端口port: 3333### 执行器运行日志文件存储磁盘路径 [选填] 需要对该路径拥有读写权限为空则使用默认路径logPath: logs/jeecg/job/jobhandler/logRetentionDays: 302.2、添加配置类用于配置bean
/*** author zhengfuping* version 1.0* description: TODO 执行配置注入到bean容器*/
Configuration
public 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;Beanpublic 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;}
}2.3、添加执行定时Handler
/*** author zhengfuping* version 1.0* description: TODO 具体执行测试demo*/
Component
Slf4j
public class XxlJobDemoHandler {/*** Bean模式一个方法为一个任务*/XxlJob(demoJobHandler)public ReturnTString demoJobHandler(String param) throws Exception {log.info(java, Hello World~~~);log.info(获取参数,param);log.info(----xxl执行成功-----);return ReturnT.SUCCESS;}
}
3、配置客户端
配置执行器appname需要和yml 的一致 配置任务 配置完成之后需要自己手动启动可以查看执行日志或者手动执行
4、结果日志输出