docker+xxl-job 使用总结
xxl-job
xxl-job: 是一个分布式任务调度平台,核心设计目标是开发迅速、学习简单、轻量级、易扩展。
项目地址:https://gitcode.com/gh_mirrors/xx/xxl-job
免费下载资源
·
一、调度器部署
1、拉取镜像
docker pull xuxueli/xxl-job-admin:2.3.0
2、下载源码,主要是获取sql脚本和properties.properties文件,配置自己的数据库连接
http://gitee.com/xuxueli0323/xxl-job
3、把数据库脚本导入自己的数据库,不在赘述。
4、修改properties.properties中mysql得配置信息。
5、linux上创建一个目录,用来挂载application.application和日志,我的目录如下
/mnt/docker/xxl-job/application.properties
/mnt/docker/xxl-job/logs
6、启动,这里因为挂载了application.properties,里面配置了端口信息,所以就不用使用 -p 8080:8080
docker run -di -v /mnt/docker/xxl-job/application.properties:/application.properties -v /mnt/docker/xxl-job/logs:/data/applogs --network=host --name xxl-job-admin xuxueli/xxl-job-admin:2.3.0
7、打开服务器对应端口的防火墙
8、访问http://xx.xx.xx.xx:xxxx/xxl-job-admin
这样调度器就部署好了
二、配置执行器
1、maven引入
<!-- 任务调度xxl-job -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.0</version>
</dependency>
2、yml配置
xxl:
job:
admin:
# 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
addresses: http:///xx.xx.xx.xx:xxxx/xxl-job-admin
executor:
# 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
address:
# 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
appname: tomato-cron-job
# 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
ip: x.xx.xx.xx #这里为你springboot的部署的服务器
# 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
port: 10016 #这里的端口需要在docker run -p 中配置
# 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
logpath:
# 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
logretentiondays: 15
# 执行器通讯TOKEN [选填]:非空时启用;
accessToken:
3、config配置
package com.tomato.job.config;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Slf4j
@Configuration
public class XxlJobConfig {
@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() {
log.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;
}
}
4、任务测试类
package com.tomato.job.TestJob;
import com.tomato.job.microservice.admin.consumer.SysInterfaceService;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class TestJob{
@Autowired
private SysInterfaceService sysInterfaceService;
/**
* 1、简单任务示例(Bean模式)
*/
@XxlJob("test")
public ReturnT<String> demoJobHandler() throws Exception {
System.out.println("执行定时任务");
return ReturnT.SUCCESS;
}
}
6、打包jar上传到服务器,如果docker注册到nacos的服务是内网地址,可以在yml中配置
spring:
profiles:
active: dev
cloud:
nacos:
config:
file-extension: properties
prefix: ${spring.application.name}
server-addr: ${spring.cloud.nacos.discovery.server-addr}
extension-configs: #可以引入多个公共的配置文件,0代表第一个
- data-id: common.properties #公共的配置文件
group: DEFAULT_GROUP
refresh: true
discovery:
ip: x.xx.xxx.xx #docker所在服务器外网地址
7、DockerFile
FROM openjdk:11
VOLUME /tmp
ADD tomato-job-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
8、切换到所在jar包所在目录,依次执行以下命令
docker build -t tomato-job:1.0 .
注意,10015是这个服务的端口,10016是yml配置中的 xxl.job.executor.ip,10016必须写,不然会报错xxl-rpc remoting error(Connection refused (Connection refused)), for url :
docker create --name tomato-job -t -p 10015:10015 -p 10016:10016 b824d7046374
docker start tomato-job && docker logs -f tomato-job
9、在xxl-job-admin图形界面配置执行器
AppName:就是yml配置中的AppName,名称自己随便取,选择自动注册
按照上图添加任务,添加成功后可以选择操作,执行一次,然后查看查询日志
调度成功
GitHub 加速计划 / xx / xxl-job
27.15 K
10.79 K
下载
xxl-job: 是一个分布式任务调度平台,核心设计目标是开发迅速、学习简单、轻量级、易扩展。
最近提交(Master分支:1 个月前 )
e5d26ba2 - 2 个月前
977ad87b - 2 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)