docker+xxl-job 使用总结

3 篇文章 0 订阅
2 篇文章 0 订阅

一、调度器部署

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,名称自己随便取,选择自动注册
在这里插入图片描述
按照上图添加任务,添加成功后可以选择操作,执行一次,然后查看查询日志
在这里插入图片描述
调度成功
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值