上一篇文章,咱们运用Java代码完结了一个简略的守时使命办理,这一篇咱们运用xxljob完结守时使命办理。 xxljob的基本运用:
源码地址
要运用xxljob请去下载这的源码,目前最新版别为:2.4.0
GitHub地址: github.com/xuxueli/xxl…
git地址: github.com/xuxueli/xxl…
下载后你会得到这样一个目录:
其中咱们主要运用的是xxl-job-admin这个工程。要做生产等级的运用,咱们必须运用数据库做载体。
预备数据库
咱们翻开“xxl-job-master->doc->db->tables_xxl_job.sql”这个文件,把它放到咱们的mysql中运转它。
就不给咱们放sql语句了 直接去项目中找就可以了 运转后咱们会得到八张表如图:
到这咱们前置作业现已完结,开端正式开端动代码
咱们需求修正xxl-job-admin工程下的 application.properties 这儿需求修正两个部分一个是数据库(改成自己的数据库地址,账户名,暗码),一个是邮件(因为我没有证书等,所以没有动,直接弃用此功用)如图:
xxljob项目修正的很少,只需求修正装备就已完结,直接发动xxl-job-admin下的XxlJobAdminApplication项目即可 留意端口号默许8080 不要跟其他项目端口抵触,可根据项目状况修正不同端口
代表发动成功
下面开端修正自己项目
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下有此代码直接仿制到自己项目 方位在:
也给咱们直接上代码,仿制曩昔即可
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.代码改动完结发动项目
发动后看到这个,代表xxljob可以运用
现在进入到页面装备守时使命 http://localhost:8080/xxl-job-admin/ 账号暗码默许:admin/123456 如需修正或新增可改xxl_job_user此表,请留意数据库中暗码是MD5加密(www.sojson.com/encrypt_md5…
登录成功后进入此页面
两个重要模块箭头标记方位
1.首先进入 履行器办理 进行装备
AppName: 需求与项目装备文件中appName称号一致 称号:随意 注册办法:自行注册 之后保存
OnLine 机器地址 如果显现无,注册办法可选手动注册
2.进入 使命办理 进行装备
赤色框框中 cron表达式要写正确,代码此办法需求什么时候履行 运转形式默许第一个 jobHandler:代表你要履行的xxljob,不可以重复(相似身份证)
跟这儿保持一致 保存后像这样展示
点击操作旁的三角号
需求马上履行,点击履行一次
代表运转成功 需求守时使命发动履行:点击发动,不履行:点击中止 发动后如图:
到此就完结了运用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.还有些问题 是因为装备不匹配造成,咱们跟着我这个,应该不会出现
如有其他问题,可留言或私信我,咱们咱们一同处理,期望此篇文章对您有用,感谢您的阅读,祝您早日完结金钱自由