源码下载地址:https://gitee.com/xuxueli0323/xxl-job

1、下载好之后解压本地目录,到入项目到idea中

2、执行sql文件:

/xxl-job/doc/db/tables_xxl_job.sql

  

 3、修改xxl-job-admin的配置文件:

/xxl-job-admin/src/main/resources/xxl-job-admin.properties,在里面修改密码、数据库连接账号密码

4、访问xxl-job-admin首页,登录

http://127.0.0.1:8080/xxl-job-admin/

admin/123456

5、引入实际项目

新建项目,添加以下依赖

<dependencies>
        <dependency>
			<groupId>com.xuxueli</groupId>
			<artifactId>xxl-job-core</artifactId>
			<version>2.3.0</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
    </dependencies>

XxlJobConfig

package com.mayikt.job.config;

import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * xxl-job config
 *
 * @author xuxueli 2017-04-28
 */
@Configuration
public class XxlJobConfig {
    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.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;
    }

    /**
     * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
     *
     *      1、引入依赖:
     *          <dependency>
     *             <groupId>org.springframework.cloud</groupId>
     *             <artifactId>spring-cloud-commons</artifactId>
     *             <version>${version}</version>
     *         </dependency>
     *
     *      2、配置文件,或者容器启动变量
     *          spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
     *
     *      3、获取IP
     *          String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
     */


}

WechatActivityJobHandler,这里可以新建多个任务 

package com.mayikt.xxl_job;
 
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
 
/**
 * @description:
 * @author: liuwq
 * @date: 2020/4/20 0020 下午 2:26
 * @version: V1.0
 */
@Component
@Slf4j
public class WechatActivityJobHandler {
 
    @XxlJob("wechatActivityJobHandler")
    public ReturnT<String> wechatActivityJobHandler(String param) {
//        ShardingUtil.ShardingVO shardingVo = ShardingUtil.getShardingVo();
//        int index = shardingVo.getIndex();
        log.info(">>>定时任务开始出发<<<param:{}", param);
        return ReturnT.SUCCESS;
    }
 
    @XxlJob("wechatActivityJobHandler222")
    public ReturnT<String> wechatActivityJobHandler222(String param) {
//        ShardingUtil.ShardingVO shardingVo = ShardingUtil.getShardingVo();
//        int index = shardingVo.getIndex();
        log.info(">>>wechatActivityJobHandler222定时任务开始出发<<<param:{}", param);
        return ReturnT.SUCCESS;
    }
 
}

application.yml新加配置

logging:
  config: classpath:logback.xml
xxl:
  job:
    accessToken: ''
    admin:
      addresses: http://127.0.0.1:8080/xxl-job-admin
    executor:
      address: ''
      appname: test-execute-job #这个名字要和页面配置的一致
      ip: ''
      logpath: /Users/liuwq/IdeaProjects/xxl-job/logs/jobhandler
      logretentiondays: 30
      port: 9998

6、配置admin-job

添加执行器

添加任务 

启动控制器,运行项目看控制台,必须要先运行admin-job

GitHub 加速计划 / xx / xxl-job
27.15 K
10.79 K
下载
xxl-job: 是一个分布式任务调度平台,核心设计目标是开发迅速、学习简单、轻量级、易扩展。
最近提交(Master分支:1 个月前 )
e5d26ba2 - 2 个月前
977ad87b - 2 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐