1、xxl-job本地启动
码云上拉取代码
导入项目中的表数据到mysql
修改xxl-job-admin对应的数据库配置,改成自己的数据库地址
找到这两个启动类启动,访问
http://localhost:8080/xxl-job-admin/
即可
xxl-job官方 数据库使用的是mysql,并没有oracle版本的,贴一个亲测实际有效的,数据库使用oracle改造后的版本
地址:xxl-job-oracle: xxl-job-oracle
2、跨平台http调用
默认执行器上线
选择执行器新建
运行模式选bean;
JobHandler填写默认的:httpJobHandler;
配置Cron表达式;
任务参数格式:
url:http://127.0.0.1:9090/test2?param=test
method:POST
data:{“username”: “张三”, “password”: “123test”}
调用成功!
3、SpringBoot自定义执行器,接入xxl-job
添加依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.1</version>
</dependency>
增加xxl-job配置类
@Configuration
public class XxlJobConfiguration {
private Logger logger = LoggerFactory.getLogger(XxlJobConfiguration.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;
}
}
application.yml添加相应的配置,配置accessToken、xxl-job-admin的地址、执行器名字
# xxl-job
xxl:
job:
accessToken: default_token # 执行器通讯TOKEN [选填]:非空时启用;
admin:
addresses: http://127.0.0.1:8080/xxl-job-admin # 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
executor:
appname: myExecutor # 执行器 AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
address:
ip: # 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
port: 9998 # ### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
logpath: /data/applogs/xxl-job/jobhandler # 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
logretentiondays: 30 # 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
在对应的方法上添加@XxlJob注解
@Component
@Slf4j
public class MyJobHandler {
@XxlJob("myJobHandler")
public void myJobHandler() {
String param = XxlJobHelper.getJobParam();
log.info("param = {}", param);
log.info("定时任务调用了!!!");
}
@XxlJob("myJobHandlerTest")
public void myJobHandlerTest() {
String param = XxlJobHelper.getJobParam();
log.info("myJobHandlerTest param = {}", param);
log.info(" myJobHandlerTest 定时任务调用了!!!");
}
}
注意:配置accessToken时,要对应上xxl-job-admin模块中的xxl.job.accessToken配置,否则不能进行调度!
新增执行器
填写配置文件中配置的executor.appname,这个必须对应,写上名称,再选自动注册,启动SpringBoot项目之后,很快执行器就上线了
任务管理,选择对应的执行器,新增任务
运行模式选bean模式,JobHandler对应@XxlJob注解的值,调用此方法
@XxlJob("myJobHandlerTest")
public void myJobHandlerTest() {
//XxlJobHelper.getJobParam()可以获取页面中,任务参数传入的参数!
String param = XxlJobHelper.getJobParam();
log.info("myJobHandlerTest param = {}", param);
log.info(" myJobHandlerTest 定时任务调用了!!!");
}
启动任务后,即可实现任务调度了