JECloud_JOB操作手册
首先在项目中添加依赖,在Apollo中添加xxljob的配置,根据使用步骤在项目中添加配置,完成业务的编写,在调度中心新增执行器,新增调度任务,启动任务完成对job的使用。
配置步骤
添加依赖
在项目最外层的pom.xml中添加依赖
<dependency>
<groupId>jecloud</groupId>
<artifactId>jecloud-common-xxljob</artifactId>
<version>${jecloud.common.version}</version>
</dependency>
项目配置文件application.yml文件中apollo的设置
apollo:
meta: http://127.0.0.1:8080
bootstrap:
enabled: true
namespaces: jdbc,redis,xxljob
eagerLoad:
enabled: true
cluster: default
autoUpdateInjectedSpringProperties: false
cache-dir: /usr/local/apollo
对执行器的配置:(我们放在apollo配置中心)
配置项 | 描述 |
---|---|
xxl.job.admin.addresses | 调度中心地址 (如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行”执行器心跳注册”和”任务结果回调”;为空则关闭自动注册;) |
xxl.job.executor.appname | 执行器注册地址,默认为空即可(优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址) |
xxl.job.executor.address | 执行器注册地址,默认为空即可(优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址) |
xxl.job.executor.ip | 执行器IP [选填]:(默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 “执行器注册” 和 “调度中心请求并触发任务”) |
xxl.job.executor.port | 执行器端口,(小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口) |
xxl.job.accessToken | 执行器通讯TOKEN(非空时启用,必须和调度服务配置的一致) |
xxl.job.executor.logpath | 执行器运行日志文件存储磁盘路径(需要对该路径拥有读写权限;为空则使用默认路径) |
xxl.job.executor.logretentiondays | 执行器日志文件保存天数 (过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能) |
使用步骤
在项目中config文件添加XxlJobConfig对配置的引用
/**
* xxl-job config
*/
@Configuration
public class XxlJobConfig implements EnvironmentAware {
private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
private Environment environment;
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
logger.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(environment.getProperty("xxl.job.admin.addresses"));
xxlJobSpringExecutor.setAppname(environment.getProperty("xxl.job.executor.appname"));
xxlJobSpringExecutor.setAddress(environment.getProperty("xxl.job.executor.address"));
xxlJobSpringExecutor.setIp(environment.getProperty("xxl.job.executor.ip"));
if(!Strings.isNullOrEmpty(environment.getProperty("xxl.job.executor.port"))){
xxlJobSpringExecutor.setPort(Integer.parseInt(environment.getProperty("xxl.job.executor.port")));
}
xxlJobSpringExecutor.setAccessToken(environment.getProperty("xxl.job.accessToken"));
xxlJobSpringExecutor.setLogPath(environment.getProperty("xxl.job.executor.logpath"));
if(!Strings.isNullOrEmpty(environment.getProperty("xxl.job.executor.logretentiondays"))){
xxlJobSpringExecutor.setLogRetentionDays(Integer.parseInt(environment.getProperty("xxl.job.executor.logretentiondays")));
}
return xxlJobSpringExecutor;
}
/**
* 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
* <p>
* 1、引入依赖:
* <dependency>
* <groupId>org.springframework.cloud</groupId>
* <artifactId>spring-cloud-commons</artifactId>
* <version>${version}</version>
* </dependency>
* <p>
* 2、配置文件,或者容器启动变量
* spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
* <p>
* 3、获取IP
* String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
*/
@Override
public void setEnvironment(Environment environment) {
this.environment = environment;
}
}
在方法上添加注解
@XxlJob(“JobHandler”)//同一服务下Handler不可重复
在调度中心添加执行器
调度中心-执行器管理中-新增执行器-输入应用程序配置的appname,自定义名称,可以手动或者自动注册服务的地址(http://ip:host)点击保存
在任务管理添加任务
任务管理-新增调度任务-选择刚刚创建的执行器,填写任务描述、负责人、报警邮件、默认cron模式,cron表达式、运行bean模式、填写项目中配置的JobHandler,剩下的按需设置
调度日志查看调度结果
配置成功后点击运行一次,在调度日志中看调度的结果,如果正常成功,配置启动即可,否则查看日志排查具体原因
注意事项:
每个任务定义的JobHandler不可重复。
执行器是内嵌的netty服务器进行的通信的,所以在单机部署多个执行器时要避免端口重复。
执行器通讯TOKEN如果启用,必须和调度服务配置的一致。
服务间的appname不可重复
关键字
- xxl-job
- jecloud-job
- job配置
- 调度服务
最后编辑: 于春辉 文档更新时间: 2024-08-29 09:50 作者:于春辉