Spring 整合 XXL-JOB

一、概述

        XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展、开箱即用。

二、XXL-JOB官方网址

https://www.xuxueli.com/xxl-job/#/

三、文档、源码下载地址、环境

文档地址

中央仓库地址

<!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>${最新稳定版本}</version>
</dependency>

环境

  • Maven3+
  • Jdk1.7+
  • Mysql5.6+

四、初始化数据库

数据库脚本位置:./Spring-Boot-XXL-JOB/doc/db/tables_xxl_job.sql

调度中心支持集群部署,集群情况下各节点务必连接同一个mysql实例;

如果mysql做主从,调度中心集群节点务必强制走主库;

五、配置调度中心

      调度中心项目:xxl-job-admin

      作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。

     1:配置文件位置:/Spring-Boot-XXL-JOB/xxl-job-admin/src/main/resources/application.properties

### web
server.port=8089
server.context-path=/xxl-job-admin

### resources
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static/

### freemarker
spring.freemarker.templateLoaderPath=classpath:/templates/
spring.freemarker.suffix=.ftl
spring.freemarker.charset=UTF-8
spring.freemarker.request-context-attribute=request
spring.freemarker.settings.number_format=0.##########

### mybatis
mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml

### xxl-job, datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl-job?Unicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
spring.datasource.tomcat.max-wait=10000
spring.datasource.tomcat.max-active=30
spring.datasource.tomcat.test-on-borrow=true

### xxl-job email
xxl.job.mail.host=smtp.163.com
xxl.job.mail.port=25
xxl.job.mail.ssl=false
xxl.job.mail.username=xxx@163.com
xxl.job.mail.password=xxx
xxl.job.mail.sendNick=XXL-JOB WARNING

### xxl-job login
xxl.job.login.username=admin
xxl.job.login.password=123456

### xxl-job, access token
xxl.job.accessToken=

### xxl-job, i18n (default empty as chinese, "en" as english)
xxl.job.i18n=

六、部署项目

按照以上的操作进行编译打包

调度中心访问地址:http://localhost:8089/xxl-job-admin (该地址执行器将会使用到,作为回调地址)

默认登录账号 “admin/123456”, 登录后运行界面如下图所示。

至此“调度中心”项目已经部署成功。

2:调度中心集群(可选){目前我还没有进行集群设置,待进行集群时再更新集群会出现的坑}

调度中心支持集群部署,提升调度系统容灾和可用性。

调度中心集群部署时,几点要求和建议:

  • DB配置保持一致;
  • 集群机器时钟保持一致(单机集群忽视);
  • 建议:推荐通过nginx为调度中心集群做负载均衡,分配域名。调度中心访问、执行器回调配置、调用API服务等操作均通过该域名进行。

七、配置执行器项目

     1: 在pom文件中引入xxl-job-core

<dependency>
	<groupId>com.xuxueli</groupId>
	<artifactId>xxl-job-core</artifactId>
	<version>2.0.1</version>
</dependency>

      2:执行器项目xxl-job

      作用:负责接收“调度中心”的调度并执行;可直接部署执行器,也可以将执行器集成到现有业务项目中。

配置文件位置:/Spring-Boot-XXL-JOB/xxl-job/src/main/resources/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:8089/xxl-job-admin

### xxl-job executor address
### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.appname=xxl-job-executor-sample
xxl.job.executor.ip=
xxl.job.executor.port=9999

### xxl-job, access token
### 执行器通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=

### xxl-job log path
### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
### 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
### xxl-job log retention days
xxl.job.executor.logretentiondays=-1

3:配置applicationcontext-xxl-job.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd">

	<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="fileEncoding" value="utf-8" />
		<property name="locations">
			<list>
				<value>classpath*:xxl-job-executor.properties</value>
			</list>
		</property>
	</bean>

    <!-- ********************************* 基础配置 ********************************* -->

	<!-- 配置01、JobHandler 扫描路径 -->
	<context:component-scan base-package="com.xxl.job.executor.service.jobhandler" />

	<!-- 配置02、执行器 -->
	<bean id="xxlJobSpringExecutor" class="com.xxl.job.core.executor.impl.XxlJobSpringExecutor" init-method="start" destroy-method="destroy" >
		<!-- 执行器注册中心地址[选填],为空则关闭自动注册 -->
		<property name="adminAddresses" value="${xxl.job.admin.addresses}" />
		<!-- 执行器AppName[选填],为空则关闭自动注册 -->
		<property name="appName" value="${xxl.job.executor.appname}" />
		<!-- 执行器IP[选填],为空则自动获取 -->
		<property name="ip" value="${xxl.job.executor.ip}" />
		<!-- 执行器端口号[选填],小于等于0则自动获取 -->
		<property name="port" value="${xxl.job.executor.port}" />
		<!-- 访问令牌[选填],非空则进行匹配校验 -->
		<property name="accessToken" value="${xxl.job.accessToken}" />
		<!-- 执行器日志路径[选填],为空则使用默认路径 -->
		<property name="logPath" value="${xxl.job.executor.logpath}" />
		<!-- 日志保存天数[选填],值大于3时生效 -->
		<property name="logRetentionDays" value="${xxl.job.executor.logretentiondays}" />
	</bean>


</beans>

 

执行器配置完毕

4:执行器集群(可选)

执行器支持集群部署,提升调度系统可用性,同时提升任务处理能力。

执行器集群部署时,几点要求和建议:

  • 执行器回调地址(xxl.job.admin.addresses)需要保持一致;执行器根据该配置进行执行器自动注册等操作。
  • 同一个执行器集群内AppName(xxl.job.executor.appname)需要保持一致;调度中心根据该配置动态发现不同集群的在线执行器列表。

九、开发

@JobHandler(value="demoJobHandler")
@Component
public class DemoJobHandler extends IJobHandler {

	@Override
	public ReturnT<String> execute(String param) throws Exception {
		XxlJobLogger.log("XXL-JOB, Hello World.");

		for (int i = 0; i < 5; i++) {
			XxlJobLogger.log("beat at:" + i);
			TimeUnit.SECONDS.sleep(2);
		}
		return SUCCESS;
	}

}

十、xxl-admin其它功能可自主进行探索

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值