首页  

xxljob2.4.1本地部署     所属分类 xxl-job 浏览量 65
https://www.xuxueli.com/xxl-job/
二、快速入门部分


2.4架构图
https://www.xuxueli.com/doc/static/xxl-job/images/img_Qohm.png


下载源码
git clone https://gitee.com/xuxueli0323/xxl-job.git -b 2.4.1

创建数据库 

mysql 客户端命令行 
source  /PATH/xxl-job/doc/db/tables_xxl_job.sql;

idea 打开项目 

启动调度器 xxl-job-admin
配置修改 
/xxl-job-admin/src/main/resources/application.properties
修改数据库连接信息

/xxl-job-admin/src/main/resources/logback.xml
修改日志路径 

idea里启动 
com.xxl.job.admin.XxlJobAdminApplication

http://127.0.0.1:8080/xxl-job-admin/
admin / 123456


启动执行器 
xxl-job-executor-sample-springboot
修改配置
/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
xxl.job.executor.logpath=/PATH/work/logs/xxl-job/jobhandler

/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/logback.xml
日志路径修改

启动 com.xxl.job.executor.XxlJobExecutorApplication



XXL-JOB2.4.1 调度中心集群部署,提升调度系统容灾和可用性 要求和建议: 要求: DB配置保持一致; 集群机器时钟保持一致(单机集群忽视); 建议: 推荐通过nginx为调度中心集群做负载均衡,分配域名。 调度中心访问、执行器回调配置、调用API服务等操作均通过该域名进行。 执行器集群部署 执行器回调地址(xxl.job.admin.addresses)需要保持一致;执行器根据该配置进行执行器自动注册等操作。 同一个执行器集群内AppName(xxl.job.executor.appname)需要保持一致; 调度中心根据该配置动态发现不同集群的在线执行器列表。
执行器管理 http://127.0.0.1:8080/xxl-job-admin/jobgroup 查看执行机器 http://172.30.77.26:9999/ http://172.30.77.26:9999/ {"code":500,"msg":"invalid request, HttpMethod not support."} 执行器开启两个端口 8081(springboot http 端口) 和 9999 (执行器服务端口) 执行器实际上是一个内嵌的Server,默认端口9999 配置项 xxl.job.executor.port 任务管理 http://127.0.0.1:8080/xxl-job-admin/jobinfo 操作 / 执行一次 手动执行 调度日志查看 http://127.0.0.1:8080/xxl-job-admin/joblog 操作 / 执行日志 修改任务 cron表达式改为 0 * * * * ? * 操作 / 启动 状态 由 STOP 变为 RUNNING
新增任务 往 xxl_job_info 新增记录 任务管理 / 新增 执行器示例 下拉列表从 xxl_job_group 里读取 调度类型 CRON CRON表达式 运行模式 BEAN JobHandler 执行器项目 @XxlJob 注解 value值 @XxlJob("commandJobHandler") 路由策略 第一个 调度过期策略 阻塞处理策略 路由策略 第一个 最后一个 轮询 随机 一致性HASH 最不经常使用 最近最久未使用 故障转移 忙碌转移 分片广播 调度过期策略 忽略 立即执行一次 阻塞处理策略 单机串行 丢弃后续调度 覆盖之前调度
避免任务重复执行 调度密集或者耗时任务可能会导致任务阻塞,集群情况下调度组件小概率情况下会重复触发; 可以通过结合 “单机路由策略(如:第一台、一致性哈希)” + “阻塞策略(如:单机串行、丢弃后续调度)” 来规避
一次完整的任务调度通讯流程 1、“调度中心”向“执行器”发送http调度请求: “执行器”中接收请求的服务,实际上是一台内嵌Server,默认端口9999; 2、“执行器”执行任务逻辑; 3、“执行器”http回调“调度中心”调度结果: “调度中心”中接收回调的服务
初始化 sql INSERT INTO `xxl_job_group`(`id`, `app_name`, `title`, `address_type`, `address_list`, `update_time`) VALUES (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL, '2018-11-03 22:21:31' ); INSERT INTO `xxl_job_info`(`id`, `job_group`, `job_desc`, `add_time`, `update_time`, `author`, `alarm_email`, `schedule_type`, `schedule_conf`, `misfire_strategy`, `executor_route_strategy`, `executor_handler`, `executor_param`, `executor_block_strategy`, `executor_timeout`, `executor_fail_retry_count`, `glue_type`, `glue_source`, `glue_remark`, `glue_updatetime`, `child_jobid`) VALUES (1, 1, '测试任务1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'CRON', '0 0 0 * * ? *', 'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', ''); INSERT INTO `xxl_job_user`(`id`, `username`, `password`, `role`, `permission`) VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL); INSERT INTO `xxl_job_lock` ( `lock_name`) VALUES ( 'schedule_lock');
错误实例 从公司回到家 , 任务执行失败 , 20:26:28.085 logback [xxl-job, admin JobTriggerPoolHelper-fastTriggerPool-281158694] ERROR c.x.job.core.util.XxlJobRemotingUtil - connect timed out java.net.SocketTimeoutException: connect timed out ip变了 , 调度器调用执行器 超时 http://172.30.77.26:9999 Not found outbound for proxy:DIRECT http://127.0.0.1:9999/ {"code":500,"msg":"invalid request, HttpMethod not support."} 调度日志 / 调度备注 任务触发类型:Cron触发 调度机器:172.30.77.26 执行器-注册方式:自动注册 执行器-地址列表:[http://172.30.77.26:9999/] 路由策略:第一个 阻塞处理策略:单机串行 任务超时时间:0 失败重试次数:0 >>>>>>>>>>>触发调度<<<<<<<<<<< 触发调度: address:http://172.30.77.26:9999/ code:500 msg:xxl-job remoting error(connect timed out), for url : http://172.30.77.26:9999/run

上一篇     下一篇
quartz.properties配置文件详解

java 技术学习面试指南

shardingsphere 简介

少儿体态体能姿势

xxljob2.4.1 表结构

flink-doris-connector 和 flink-cdc-pipeline-connector-doris 的区别