上一篇文章,咱们运用Java代码完结了一个简略的守时使命办理,这一篇咱们运用xxljob完结守时使命办理。 xxljob的基本运用:

源码地址

要运用xxljob请去下载这的源码,目前最新版别为:2.4.0
GitHub地址: github.com/xuxueli/xxl…
git地址: github.com/xuxueli/xxl…

下载后你会得到这样一个目录:

【分布式任务调度】XXL-JOB快速搭建从入门到精通

其中咱们主要运用的是xxl-job-admin这个工程。要做生产等级的运用,咱们必须运用数据库做载体。

预备数据库

咱们翻开“xxl-job-master->doc->db->tables_xxl_job.sql”这个文件,把它放到咱们的mysql中运转它。

【分布式任务调度】XXL-JOB快速搭建从入门到精通

就不给咱们放sql语句了 直接去项目中找就可以了 运转后咱们会得到八张表如图:

【分布式任务调度】XXL-JOB快速搭建从入门到精通

到这咱们前置作业现已完结,开端正式开端动代码

咱们需求修正xxl-job-admin工程下的 application.properties 这儿需求修正两个部分一个是数据库(改成自己的数据库地址,账户名,暗码),一个是邮件(因为我没有证书等,所以没有动,直接弃用此功用)如图:

【分布式任务调度】XXL-JOB快速搭建从入门到精通
xxljob项目修正的很少,只需求修正装备就已完结,直接发动xxl-job-admin下的XxlJobAdminApplication项目即可 留意端口号默许8080 不要跟其他项目端口抵触,可根据项目状况修正不同端口

【分布式任务调度】XXL-JOB快速搭建从入门到精通
代表发动成功

下面开端修正自己项目

1.添加pom依靠
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>2.4.0</version>
</dependency>
2.修正装备文件

在xxljob工程xxl-job-executor-sample-springboot此模块下的application.properties 装备信息,仿制到自己项目的装备中 为便利咱们 可直接仿制运用

### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### xxl-job, access token
xxl.job.accessToken=default_token
### xxl-job executor appname
xxl.job.executor.appname=xxl-job-executor-sample
### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
xxl.job.executor.address=
### xxl-job executor server-info
xxl.job.executor.ip=
xxl.job.executor.port=9999
### xxl-job executor log-path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
### xxl-job executor log-retention-days
xxl.job.executor.logretentiondays=30

因为我项目是装备文件是yml,所以是这样的

# xxl-job admin address list
xxl:
  job:
    admin:
      addresses: http://localhost:8080/xxl-job-admin
# xxl-job executor app config
    executor:
      appname: xxl-job-executor-sample
      address:
      ip:
      port: 9999
      logpath: /data/applogs/xxl-job/jobhandler
      logretentiondays: 30
    accessToken: default_token
3.添加XxlJobConfig.java

在xxljob下有此代码直接仿制到自己项目 方位在:

【分布式任务调度】XXL-JOB快速搭建从入门到精通

也给咱们直接上代码,仿制曩昔即可

package com.jz.app.server.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();
     */
}
4.添加测试办法(自己的守时使命办法,注解内容很重要)
package com.jz.app.server.quartzTask;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;
@Component
public class MyJobHandler{
    @XxlJob("MyJobHandler")
    public void execute() throws Exception {
        System.out.println("hello xxljob");
    }
}
5.代码改动完结发动项目

【分布式任务调度】XXL-JOB快速搭建从入门到精通

发动后看到这个,代表xxljob可以运用

现在进入到页面装备守时使命 http://localhost:8080/xxl-job-admin/ 账号暗码默许:admin/123456 如需修正或新增可改xxl_job_user此表,请留意数据库中暗码是MD5加密(www.sojson.com/encrypt_md5…

登录成功后进入此页面

【分布式任务调度】XXL-JOB快速搭建从入门到精通

两个重要模块箭头标记方位
1.首先进入 履行器办理 进行装备

【分布式任务调度】XXL-JOB快速搭建从入门到精通

AppName: 需求与项目装备文件中appName称号一致 称号:随意 注册办法:自行注册 之后保存

【分布式任务调度】XXL-JOB快速搭建从入门到精通

OnLine 机器地址 如果显现无,注册办法可选手动注册

2.进入 使命办理 进行装备

【分布式任务调度】XXL-JOB快速搭建从入门到精通

赤色框框中 cron表达式要写正确,代码此办法需求什么时候履行 运转形式默许第一个 jobHandler:代表你要履行的xxljob,不可以重复(相似身份证)

【分布式任务调度】XXL-JOB快速搭建从入门到精通

跟这儿保持一致 保存后像这样展示

【分布式任务调度】XXL-JOB快速搭建从入门到精通

点击操作旁的三角号

【分布式任务调度】XXL-JOB快速搭建从入门到精通

需求马上履行,点击履行一次

【分布式任务调度】XXL-JOB快速搭建从入门到精通

代表运转成功 需求守时使命发动履行:点击发动,不履行:点击中止 发动后如图:

【分布式任务调度】XXL-JOB快速搭建从入门到精通
到此就完结了运用xxljob对守时使命的办理

注:将我自己遇到的问题说下,可能你也会碰到

1.报错信息:xxl-job remoting error(Unexpected end of file from server), for url : 此问题是因为netty版别问题,运用此版别即可

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-all</artifactId>
    <version>4.1.48.Final</version>
</dependency>

2.还有些问题 是因为装备不匹配造成,咱们跟着我这个,应该不会出现

如有其他问题,可留言或私信我,咱们咱们一同处理,期望此篇文章对您有用,感谢您的阅读,祝您早日完结金钱自由