xxljob从2.3.0开始做了一些改变,查看源码发现有很多变动,其中包括handler的实现方式、注解等,记录一下:
依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.0</version>
</dependency>
配置
@Slf4j
@Configuration
@ComponentScan(basePackages = "com.xxx.job") //指定扫描handler的包的位置
public class XxlJobConfig {
@Value("${xxl.job.flag}")
private boolean flag;
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
@Value("${xxl.job.executor.appname}")
private String appName;
@Value("${xxl.job.executor.port}")
private int port;
@Value("${xxl.job.executor.ip}")
private String ip;
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
//判断是否注册到调度中心
if (flag) { //添加开关
log.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppname(appName);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setIp(ip);
return xxlJobSpringExecutor;
} else {
return null;
}
}
}
配置文件
xxl:
job:
flag: true
admin:
addresses : http://127.0.0.1:8080/xxl-job-admin/
executor:
ip: 127.0.0.1 //当前服务的ip
appname : test
port : 9999 //docker部署时需要做这个端口的映射,用于xxljob调度时请求
定时任务
2.3.x与之前版本不同的地方就在XxlJob注解
@Slf4j
@Component
public class DemoJobHandler{
@XxlJob(value = "testJobHandler")
public void demoJobHandler() throws Exception {
// 2.3.0版本获取参数的方式
// 注意xxl-job统一只接受一个String类型的参数,如果有多个参数,请自定义规则,获取到参数后自行切割
String param = XxlJobHelper.getJobParam();
log.info("job 参数:{}",param);
// 打印到日志文件的方式,打印之后的文件,在调度中心的调度日志管理中,操作选项下的执行日志可查看到
XxlJobHelper.log("=====testJobHandler===== test XXL-JOB!");
// 执行结束后返回的方式,同样在执行日志可查看
XxlJobHelper.handleSuccess("执行成功");
}
}
配置调度平台
配置异常告警邮件发送
这里使用腾讯企业邮箱,对应的host为smtp.exmail.qq.com,发送端口号为465
由于使用k8s启动一个pod的形式部署xxl-job,所以这里直接选择对应的docker镜像创建,由于需要设置邮件发送端配置,所以到git上找到项目,查看一下配置文件的格式(2.3版本配置文件)
这里需要配置host、port、username、password、from(发送方)
- host:smtp.exmail.qq.com
- port:465
上面两个配置是腾讯企业邮箱固定的 - username:用于发送邮件的账号
- password:密码,一般需要登录企业邮箱获取(登录企业微信邮箱,设置-》账号-》开启安全登录,开启安全登录后,到邮箱绑定页,生成新密码
到这里就获得了授权密码) - from 邮件发送方的邮箱,一般和username一样
编辑k8s的xxljob这个pod,通过环境变量的形式修改配置(使用docker的话在启动命令中加上配置也可以;自己编译的话拉下最新代码修改properties配置文件即可),保存启动节点,
这就完成了xxl-job的邮件发送的配置,然后找到指定的执行任务,编辑任务的告警邮箱
注:多个邮箱用英文逗号分隔即可,保存后手动执行一次任务
邮箱中收到了告警邮件√