简介

XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

官方文档很完善,不多赘述。本文主要是搭建XXL-JOB和简单使用的记录。

搭建xxl-job-admin管理端

运行环境

  • Ubuntu 16.04 64位
  • Mysql 5.7

安装Mysql

$ sudo apt-get update
$ sudo apt-get install mysql-server ## 设置mysql,主要是安全方面的,密码策略等
$ mysql_secure_installation
## 配置远程访问
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
$ sudo service mysql restart
$ sudo service mysql status
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2019-06-05 13:23:41 HKT; 45s ago
...

创建数据库

$ mysql -u root -p
mysql> CREATE database if NOT EXISTS `xxl-job` default character set utf8 collate utf8_general_ci;

创建用户

$ mysql -u root -p
mysql> CREATE USER 'xxl-job'@'%' IDENTIFIED BY 'xxlJob2019@';
mysql> GRANT ALL PRIVILEGES ON `xxl-job`.* TO 'xxl-job'@'%';

本地测试xxl-job-admin

拉取最新源码

$ git clone git@github.com:xuxueli/xxl-job.git
$ cd xxl-job

导入项目

我比较熟悉Idea开发工具,所以这里使用IdeaGradle项目进行演示。

打开xxl-job,项目结构如下

测试项目

打开xxl-job-admin/resources/application.properties,修改mysql连接信息

### xxl-job, datasource
spring.datasource.url=jdbc:mysql://192.168.32.129:3306/xxl-job?Unicode=true&characterEncoding=UTF-8
spring.datasource.username=xxl-job
spring.datasource.password=xxlJob2019@

使用/xxl-job/doc/db/tables_xxl_job.sql初始化数据库,初始化完应该如下图

准备就绪后,就可以启动项目了,然后打开地址http://localhost:8080/xxl-job-admin将会看到首页

部署

打包调度中心

$ cd /xxl-job
$ mvn install
...
[INFO] xxl-job ............................................ SUCCESS [ 0.513 s]
[INFO] xxl-job-core ....................................... SUCCESS [ 4.258 s]
[INFO] xxl-job-admin ...................................... SUCCESS [ 5.525 s]
[INFO] xxl-job-executor-samples ........................... SUCCESS [ 0.016 s]
[INFO] xxl-job-executor-sample-spring ..................... SUCCESS [ 2.188 s]
[INFO] xxl-job-executor-sample-springboot ................. SUCCESS [ 0.892 s]
[INFO] xxl-job-executor-sample-jfinal ..................... SUCCESS [ 1.753 s]
[INFO] xxl-job-executor-sample-nutz ....................... SUCCESS [ 1.316 s]
[INFO] xxl-job-executor-sample-frameless .................. SUCCESS [ 0.358 s]
[INFO] xxl-job-executor-sample-jboot ...................... SUCCESS [ 1.279 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18.549 s
[INFO] Finished at: 2019-06-05T14:40:25+08:00
[INFO] ------------------------------------------------------------------------

看到以上信息,说明我们打包成功了,在/xxl-job/xxl-job-admin目录下会存在jar文件:xxl-job-admin-2.1.0-SNAPSHOT.jar

部署到服务器

$ sudo apt install openjdk-8-jdk
$ java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.16.04.1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode) $ sudo mkdir -p /data/xxl-job
$ sudo cd /data/xxl-job
## 上传我们打包好的jar至此目录,并添加软连接
$ sudo ln -s xxl-job-admin-2.1.0-SNAPSHOT.jar current.jar ## 注册为system服务,可以达到异常重启,开机自启等目的
$ sudo vim /etc/systemd/system/xxl-job.service
[Unit]
Description=xxl-job Service Daemon
After=mysql.service
[Service]
Environment="JAVA_OPTS= -Xmx1024m -Xms1024m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:NewRatio=3 -Dserver.port=8081"
# java要写绝对路径
ExecStart=/usr/local/jdk/bin/java -jar /data/xxl-job/current.jar
Restart=always
WorkingDirectory=/data/xxl-job/
[Install]
WantedBy=multi-user.target $ sudo systemctl enable xxl-job.service
$ sudo service xxl-job start
$ sudo service xxl-job status
● xxl-job.service - xxl-job Service Daemon
Loaded: loaded (/etc/systemd/system/xxl-job.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-07-18 18:19:08 CST; 2min 19s ago
Main PID: 27572 (java)
CGroup: /system.slice/xxl-job.service
└─27572 /usr/local/jdk/bin/java -jar /data/xxl-job/current.jar

我们访问一下http://192.168.32.129:8080/xxl-job-admin:

测试任务调度

以上,我们的任务调度管理端已经搭建完成,接下来,让我们测试下任务调度。

直接使用自带的SpringBoot测试项目xxl-job-executor-sample-springboot进行测试,修改配置文件

xxl-job-executor-sample-springboot=http://192.168.32.129:8080/xxl-job-admin

自定义任务

编写一个简单的任务,打印100次当前序列

package com.xxl.job.executor.service.jobhandler;

import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import com.xxl.job.core.log.XxlJobLogger;
import org.springframework.stereotype.Component; import java.util.concurrent.TimeUnit; /**
* TODO
*
* @author gaochen
* @date 2019/6/5
*/
@JobHandler(value="gcddJobHandler")
@Component
public class GcddJobHandler extends IJobHandler {
@Override
public ReturnT<String> execute(String param) throws Exception {
for (int i = 0; i < 100; i++) {
XxlJobLogger.log("XXL-JOB, print " + i);
TimeUnit.SECONDS.sleep(1);
}
return SUCCESS;
}
}

启动执行器

然后启动执行器,启动完成后,我们会发现管理页面的执行器列表会多出我们刚才启动的执行器

添加任务

查看任务执行日志

可以看到,任务已经按照我们的规划执行成功了,非常的方便。

结语

想要了解更详细的内容,请访问xxl-job官网

分布式任务调度XXL-JOB初体验的更多相关文章

  1. 分布式NoSQL数据库MongoDB初体验-v5.0.5

    概述 定义 MongoDB官网 https://www.mongodb.com/ 社区版最新版本5.0,其中5.2版本很快也要面世了 MongoDB GitHub源码 https://github.c ...

  2. 全分布式的Hadoop初体验

    背景 之前的时间里对 Hadoop 的使用都是基于学长所搭建起的实验环境的,没有完整的自己部署和维护过,最近抽时间初体验了在集群环境下装机.配置.运行的全过程,梳理总结到本文中. 配置 内存:8G C ...

  3. 【Python3爬虫】爬取美女图新姿势--Redis分布式爬虫初体验

    一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...

  4. 【Python3爬虫】学习分布式爬虫第一步--Redis分布式爬虫初体验

    一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...

  5. 【docker Elasticsearch】Rest风格的分布式开源搜索和分析引擎Elasticsearch初体验

    概述: Elasticsearch 是一个分布式.可扩展.实时的搜索与数据分析引擎. 它能从项目一开始就赋予你的数据以搜索.分析和探索的能力,这是通常没有预料到的. 它存在还因为原始数据如果只是躺在磁 ...

  6. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  7. 文档数据库RavenDB-介绍与初体验

    文档数据库RavenDB-介绍与初体验 阅读目录 1.RavenDB概述与特性 2.RavenDB安装 3.C#开发初体验 4.RavenDB资源 不知不觉,“.NET平台开源项目速览“系列文章已经1 ...

  8. 分布式任务调度平台XXL-JOB

    <分布式任务调度平台XXL-JOB>       一.简介 1.1 概述 XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并 ...

  9. 分布式任务调度系统:xxl-job

    任务调度,通俗来说实际上就是"定时任务",分布式任务调度系统,翻译一下就是"分布式环境下定时任务系统". xxl-job一个分布式任务调度平台,其核心设计目标是 ...

随机推荐

  1. Spring框架学习笔记(9)——API接口设计相关知识及具体编码实现

    最近需要设计一个API服务器,想要把API接口搞得规范一下,就通过网上搜集到了一些资料,以下便是自己的一些理解以及相关的具体实现 本文采用的是spring boot+maven的方案 restful规 ...

  2. linux下的 $ ./configure $ sudo make && sudo make install

    $ ./configure $ sudo make && sudo make install 1)./configure命令就是执行当前目录的名为configure的脚本,主要的作用是 ...

  3. python 中的反斜杠匹配的问题

    关于反斜杠的匹配问题可以参考: https://www.cnblogs.com/mzc1997/p/7689235.html 文章中提出了两个概念: 字符串转义和正则转义,我觉得是理解反斜杠的关键所在 ...

  4. wordpress 如何正确升级

    http://www.admin5.com/article/20141230/578710.shtml 正确的版本升级应该是,备份数据库和文件,然后禁用所有的插件后在执行升级.这样也避免不了升级过后启 ...

  5. 拖延症?贪玩?来试试"百万金币时间管理法"

    中午吃完饭就想休息? 一到假期就起不来? 总是想玩游戏? 究其原因是因为我们没有深刻意识到时间的价值. 这点在大气爱智慧的视频:懂这个道理,保证让你快速自律起来!拯救拖延症,更好的戒掉不良习惯中有讲到 ...

  6. 原生servlet项目启动自动加载一个方法

    web.xml里的配置: 配置好要加载的类,其中1这一句是项目启动时自动加载该类的必要条件. <servlet> <servlet-name>SharePltfCLServle ...

  7. 你知道EasyX吗

    关于C++控制台上的图形界面,你知道一个东西叫做EasyX吗? 作为一个退役的OI选手(WTF?\(3^2-3^1\)年级退役?),在退役之后总想找点事情做. 开发个游戏?(我只会控制台) 学下人工智 ...

  8. redis命令总结与持久化

    上篇redis文章为大家介绍了redis与它的部署工作.这次我们来说一下redis的操作命令与持久化 一.命令总结 1)String操作 6379> set k1 v1 #设定值 6379> ...

  9. [redis读书笔记] 第二部分 集群

    1. 一个集群会包含多个节点(一个节点就是一个reid是服务器),CLUST MEET <ip><port>可以添加一个node到集群,命令执行后,两个node之间就会进行握手 ...

  10. Android Studio 找不到夜神模拟器的解决办法

    Android Studio 找不到夜神模拟器的解决办法 1.启动夜神模拟器 2.找到你电脑上的夜神安装目录,在bin目录下打开cmd窗口,运行命令 nox_adb.exe connect 127.0 ...