分布式任务调度XXL-JOB初体验

栏目: 数据库 · 发布时间: 6年前

内容简介:XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。官方文档很完善,不多赘述。本文主要是搭建我比较熟悉

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初体验

测试项目

打开 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 初始化数据库,初始化完应该如下图

分布式任务调度XXL-JOB初体验

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

分布式任务调度XXL-JOB初体验

部署

打包调度中心

$ 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
Description=xxl-job Service Daemon
After=mysql.service
[Service]
Type=simple
Environment="JAVA_OPTS= -Xmx1024m -Xms1024m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:NewRatio=3"
ExecStart=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
   Loaded: loaded (/etc/systemd/system/xxl-job.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-06-05 15:30:08 HKT; 2min 34s ago
...
复制代码

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

分布式任务调度XXL-JOB初体验

测试任务调度

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

直接使用自带的 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初体验

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ruby on Rails电子商务实战

Ruby on Rails电子商务实战

Christian Hellsten、Jarkko Laine / 曹维远 / 人民邮电出版社 / 2008-4 / 49.00元

《Ruby on Rails电子商务实战》全面讲解了使用Ruby on Rails创建产品级应用程序的过程。书中通过演示构建网上书店的全过程,先后介绍如何使用如TDD的敏捷实践,启动一个项目并建立良好稳定的基础,如何深入Ruby on Rails,实现诸如将应用程序翻译成各种语言对产品进行调试等的普遍需求。其中用到的主要技术包括Ajax、聚合、设置标签和国际化等,还介绍了如何使用ActiveRec......一起来看看 《Ruby on Rails电子商务实战》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具