基于elasticjob的入门maven项目搭建
一、项目所需工具
1、zookepper:版本需要3.6.0+以上版本
apache-zookeeper-3.7.1-Java文档类资源-CSDN下载
二、项目搭建
1、首先新建一个maven项目,引入对应的elasticjob包,pom配置如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>myjob</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>myjob</name>
<description>Demo project for elasticJob</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- MySQL 连接驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere.elasticjob</groupId>
<artifactId>elasticjob-lite-core</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere.elasticjob</groupId>
<artifactId>elasticjob-lite-spring-boot-starter</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2、新建一个自己的自定义Job类,实现SimpleJob(elasticjob的接口)接口
package com.example.myjob;
import org.apache.shardingsphere.elasticjob.api.ShardingContext;
import org.apache.shardingsphere.elasticjob.simple.job.SimpleJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
/**
* 类功能说明
*
* @author venlenter
* @date 2022/8/31 11:35
*/
@Component
public class MyElasticJob implements SimpleJob {
private final Logger logger = LoggerFactory.getLogger(MyElasticJob.class);
@Override
public void execute(ShardingContext shardingContext) {
logger.info("MyElasticJob start, shardingItem:" + shardingContext.getShardingItem());
}
}
3、配置下application.properties
#elasticjob注册中心配置 本地zookepper地址
elasticjob.reg-center.server-lists=localhost:2181
#是否启用job(true生效,false不生效)
elasticjob.enabled=true
#elasticJob配置 配置为数据库作为日志记录
elasticjob.tracing.type=RDB
elasticjob.reg-center.namespace=my-elastic-job
#配置项为 elasticjob.jobs.[自定义job名].elasticJobClass
elasticjob.jobs.myElasticJob.elasticJobClass=com.example.myjob.MyElasticJob
elasticjob.jobs.myElasticJob.cron=0/5 * * * * ?
elasticjob.jobs.myElasticJob.overwrite=true
elasticjob.jobs.myElasticJob.shardingTotalCount=1
#数据库配置
spring.datasource.url=jdbc:mysql://111.222.333.444:3306/job_db?useUnicode=true&useSSL=false&characterEncoding=utf8&allowMultiQueries=true
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=xxx
spring.datasource.password=yyyy
数据库需要提前初始化,新建2张表,用于elasticjob请求存储,如果不需要用到请求日志存储,也可以把屏蔽掉elasticjob.tracing.type=RDB这个配置。
所需的2张表建表语句如下
CREATE TABLE `job_execution_log` (
`auto_id` int(11) NOT NULL AUTO_INCREMENT,
`id` varchar(40) NOT NULL,
`job_name` varchar(100) NOT NULL,
`task_id` varchar(255) NOT NULL,
`hostname` varchar(255) NOT NULL,
`ip` varchar(50) NOT NULL,
`sharding_item` int(11) NOT NULL,
`execution_source` varchar(20) NOT NULL,
`failure_cause` varchar(4000) DEFAULT NULL,
`is_success` int(11) NOT NULL,
`start_time` timestamp NULL DEFAULT NULL,
`complete_time` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`auto_id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `job_status_trace_log` (
`auto_id` int(11) NOT NULL AUTO_INCREMENT,
`id` varchar(40) NOT NULL,
`job_name` varchar(100) NOT NULL,
`original_task_id` varchar(255) NOT NULL,
`task_id` varchar(255) NOT NULL,
`slave_id` varchar(50) NOT NULL,
`source` varchar(50) NOT NULL,
`execution_type` varchar(20) NOT NULL,
`sharding_item` varchar(100) NOT NULL,
`state` varchar(20) NOT NULL,
`message` varchar(4000) DEFAULT NULL,
`creation_time` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`auto_id`),
KEY `TASK_ID_STATE_INDEX` (`task_id`(128),`state`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
4、启动本地zk,再启动上述的maven项目application。然后就可以看到elasticjob不断定时触发执行了
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.7.3)
2022-09-01 10:20:20.881 INFO 32316 --- [ main] com.example.myjob.MyjobApplication : Starting MyjobApplication using Java 1.8.0_172 on DESKTOP-U45JULJ with PID 32316 (E:\myWorkspace\myjob\target\classes started by Administrator in E:\myWorkspace\myjob)
2022-09-01 10:20:20.884 INFO 32316 --- [ main] com.example.myjob.MyjobApplication : No active profile set, falling back to 1 default profile: "default"
2022-09-01 10:20:22.034 INFO 32316 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2022-09-01 10:20:22.035 INFO 32316 --- [ main] o.a.catalina.core.AprLifecycleListener : An older version [1.2.25] of the Apache Tomcat Native library is installed, while Tomcat recommends a minimum version of [1.2.30]
2022-09-01 10:20:22.035 INFO 32316 --- [ main] o.a.catalina.core.AprLifecycleListener : Loaded Apache Tomcat Native library [1.2.25] using APR version [1.7.0].
2022-09-01 10:20:22.035 INFO 32316 --- [ main] o.a.catalina.core.AprLifecycleListener : APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [false].
2022-09-01 10:20:22.035 INFO 32316 --- [ main] o.a.catalina.core.AprLifecycleListener : APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
2022-09-01 10:20:22.038 INFO 32316 --- [ main] o.a.catalina.core.AprLifecycleListener : OpenSSL successfully initialized [OpenSSL 1.1.1g 21 Apr 2020]
2022-09-01 10:20:22.048 INFO 32316 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2022-09-01 10:20:22.049 INFO 32316 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.65]
2022-09-01 10:20:22.267 INFO 32316 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2022-09-01 10:20:22.267 INFO 32316 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1323 ms
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
2022-09-01 10:20:22.734 INFO 32316 --- [ main] o.a.c.f.imps.CuratorFrameworkImpl : Starting
2022-09-01 10:20:31.750 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:zookeeper.version=3.6.0--b4c89dc7f6083829e18fae6e446907ae0b1f22d7, built on 02/25/2020 14:38 GMT
2022-09-01 10:20:31.750 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:host.name=DESKTOP-U45JULJ
2022-09-01 10:20:31.751 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.version=1.8.0_172
2022-09-01 10:20:31.751 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.vendor=Oracle Corporation
2022-09-01 10:20:31.751 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.home=C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre
2022-09-01 10:20:31.751 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.class.path=C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\lib\rt.jar;E:\myWorkspace\myjob\target\classes;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-starter-actuator\2.7.3\spring-boot-starter-actuator-2.7.3.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-starter\2.7.3\spring-boot-starter-2.7.3.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot\2.7.3\spring-boot-2.7.3.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.7.3\spring-boot-autoconfigure-2.7.3.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.7.3\spring-boot-starter-logging-2.7.3.jar;C:\Users\Administrator\.m2\repository\ch\qos\logback\logback-classic\1.2.11\logback-classic-1.2.11.jar;C:\Users\Administrator\.m2\repository\ch\qos\logback\logback-core\1.2.11\logback-core-1.2.11.jar;C:\Users\Administrator\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.17.2\log4j-to-slf4j-2.17.2.jar;C:\Users\Administrator\.m2\repository\org\apache\logging\log4j\log4j-api\2.17.2\log4j-api-2.17.2.jar;C:\Users\Administrator\.m2\repository\org\slf4j\jul-to-slf4j\1.7.36\jul-to-slf4j-1.7.36.jar;C:\Users\Administrator\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-actuator-autoconfigure\2.7.3\spring-boot-actuator-autoconfigure-2.7.3.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-actuator\2.7.3\spring-boot-actuator-2.7.3.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.13.3\jackson-databind-2.13.3.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.13.3\jackson-annotations-2.13.3.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.13.3\jackson-core-2.13.3.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.13.3\jackson-datatype-jsr310-2.13.3.jar;C:\Users\Administrator\.m2\repository\io\micrometer\micrometer-core\1.9.3\micrometer-core-1.9.3.jar;C:\Users\Administrator\.m2\repository\org\hdrhistogram\HdrHistogram\2.1.12\HdrHistogram-2.1.12.jar;C:\Users\Administrator\.m2\repository\org\latencyutils\LatencyUtils\2.0.3\LatencyUtils-2.0.3.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.7.3\spring-boot-starter-web-2.7.3.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.7.3\spring-boot-starter-json-2.7.3.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.13.3\jackson-datatype-jdk8-2.13.3.jar;C:\Users\Administrator\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.13.3\jackson-module-parameter-names-2.13.3.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.7.3\spring-boot-starter-tomcat-2.7.3.jar;C:\Users\Administrator\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.65\tomcat-embed-core-9.0.65.jar;C:\Users\Administrator\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.65\tomcat-embed-el-9.0.65.jar;C:\Users\Administrator\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.65\tomcat-embed-websocket-9.0.65.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-web\5.3.22\spring-web-5.3.22.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-beans\5.3.22\spring-beans-5.3.22.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-webmvc\5.3.22\spring-webmvc-5.3.22.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-aop\5.3.22\spring-aop-5.3.22.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-context\5.3.22\spring-context-5.3.22.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-expression\5.3.22\spring-expression-5.3.22.jar;C:\Users\Administrator\.m2\repository\org\slf4j\slf4j-api\1.7.36\slf4j-api-1.7.36.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-core\5.3.22\spring-core-5.3.22.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-jcl\5.3.22\spring-jcl-5.3.22.jar;C:\Users\Administrator\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\2.7.3\spring-boot-starter-jdbc-2.7.3.jar;C:\Users\Administrator\.m2\repository\com\zaxxer\HikariCP\4.0.3\HikariCP-4.0.3.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-jdbc\5.3.22\spring-jdbc-5.3.22.jar;C:\Users\Administrator\.m2\repository\org\springframework\spring-tx\5.3.22\spring-tx-5.3.22.jar;C:\Users\Administrator\.m2\repository\mysql\mysql-connector-java\8.0.30\mysql-connector-java-8.0.30.jar;C:\Users\Administrator\.m2\repository\org\apache\shardingsphere\elasticjob\elasticjob-lite-core\3.0.1\elasticjob-lite-core-3.0.1.jar;C:\Users\Administrator\.m2\repository\org\apache\shardingsphere\elasticjob\elasticjob-api\3.0.1\elasticjob-api-3.0.1.jar;C:\Users\Administrator\.m2\repository\com\google\guava\guava\29.0-jre\guava-29.0-jre.jar;C:\Users\Administrator\.m2\repository\com\google\guava\failureaccess\1.0.1\failureaccess-1.0.1.jar;C:\Users\Administrator\.m2\repository\com\google\guava\listenablefuture\9999.0-empty-to-avoid-conflict-with-guava\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar;C:\Users\Administrator\.m2\repository\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar;C:\Users\Administrator\.m2\repository\org\checkerframework\checker-qual\2.11.1\checker-qual-2.11.1.jar;C:\Users\Administrator\.m2\repository\com\google\errorprone\error_prone_annotations\2.3.4\error_prone_annotations-2.3.4.jar;C:\Users\Administrator\.m2\repository\org\apache\shardingsphere\elasticjob\elasticjob-infra-common\3.0.1\elasticjob-infra-common-3.0.1.jar;C:\Users\Administrator\.m2\repository\org\apache\shardingsphere\elasticjob\elasticjob-registry-center\3.0.1\elasticjob-registry-center-3.0.1.jar;C:\Users\Administrator\.m2\repository\org\apache\curator\curator-framework\5.1.0\curator-framework-5.1.0.jar;C:\Users\Administrator\.m2\repository\org\apache\curator\curator-client\5.1.0\curator-client-5.1.0.jar;C:\Users\Administrator\.m2\repository\org\apache\zookeeper\zookeeper\3.6.0\zookeeper-3.6.0.jar;C:\Users\Administrator\.m2\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;C:\Users\Administrator\.m2\repository\org\apache\zookeeper\zookeeper-jute\3.6.0\zookeeper-jute-3.6.0.jar;C:\Users\Administrator\.m2\repository\org\apache\yetus\audience-annotations\0.5.0\audience-annotations-0.5.0.jar;C:\Users\Administrator\.m2\repository\io\netty\netty-handler\4.1.79.Final\netty-handler-4.1.79.Final.jar;C:\Users\Administrator\.m2\repository\io\netty\netty-common\4.1.79.Final\netty-common-4.1.79.Final.jar;C:\Users\Administrator\.m2\repository\io\netty\netty-resolver\4.1.79.Final\netty-resolver-4.1.79.Final.jar;C:\Users\Administrator\.m2\repository\io\netty\netty-buffer\4.1.79.Final\netty-buffer-4.1.79.Final.jar;C:\Users\Administrator\.m2\repository\io\netty\netty-transport\4.1.79.Final\netty-transport-4.1.79.Final.jar;C:\Users\Administrator\.m2\repository\io\netty\netty-transport-native-unix-common\4.1.79.Final\netty-transport-native-unix-common-4.1.79.Final.jar;C:\Users\Administrator\.m2\repository\io\netty\netty-codec\4.1.79.Final\netty-codec-4.1.79.Final.jar;C:\Users\Administrator\.m2\repository\io\netty\netty-transport-native-epoll\4.1.79.Final\netty-transport-native-epoll-4.1.79.Final.jar;C:\Users\Administrator\.m2\repository\io\netty\netty-transport-classes-epoll\4.1.79.Final\netty-transport-classes-epoll-4.1.79.Final.jar;C:\Users\Administrator\.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar;C:\Users\Administrator\.m2\repository\org\apache\curator\curator-recipes\5.1.0\curator-recipes-5.1.0.jar;C:\Users\Administrator\.m2\repository\org\apache\shardingsphere\elasticjob\elasticjob-simple-executor\3.0.1\elasticjob-simple-executor-3.0.1.jar;C:\Users\Administrator\.m2\repository\org\apache\shardingsphere\elasticjob\elasticjob-executor-kernel\3.0.1\elasticjob-executor-kernel-3.0.1.jar;C:\Users\Administrator\.m2\repository\org\apache\shardingsphere\elasticjob\elasticjob-error-handler-general\3.0.1\elasticjob-error-handler-general-3.0.1.jar;C:\Users\Administrator\.m2\repository\org\apache\shardingsphere\elasticjob\elasticjob-error-handler-spi\3.0.1\elasticjob-error-handler-spi-3.0.1.jar;C:\Users\Administrator\.m2\repository\org\apache\shardingsphere\elasticjob\elasticjob-dataflow-executor\3.0.1\elasticjob-dataflow-executor-3.0.1.jar;C:\Users\Administrator\.m2\repository\org\apache\shardingsphere\elasticjob\elasticjob-script-executor\3.0.1\elasticjob-script-executor-3.0.1.jar;C:\Users\Administrator\.m2\repository\org\apache\commons\commons-exec\1.3\commons-exec-1.3.jar;C:\Users\Administrator\.m2\repository\org\apache\shardingsphere\elasticjob\elasticjob-http-executor\3.0.1\elasticjob-http-executor-3.0.1.jar;C:\Users\Administrator\.m2\repository\org\apache\shardingsphere\elasticjob\elasticjob-tracing-rdb\3.0.1\elasticjob-tracing-rdb-3.0.1.jar;C:\Users\Administrator\.m2\repository\org\apache\shardingsphere\elasticjob\elasticjob-tracing-api\3.0.1\elasticjob-tracing-api-3.0.1.jar;C:\Users\Administrator\.m2\repository\org\apache\commons\commons-lang3\3.12.0\commons-lang3-3.12.0.jar;C:\Users\Administrator\.m2\repository\org\yaml\snakeyaml\1.30\snakeyaml-1.30.jar;C:\Users\Administrator\.m2\repository\com\google\code\gson\gson\2.9.1\gson-2.9.1.jar;C:\Users\Administrator\.m2\repository\org\quartz-scheduler\quartz\2.3.2\quartz-2.3.2.jar;C:\Users\Administrator\.m2\repository\com\mchange\mchange-commons-java\0.2.15\mchange-commons-java-0.2.15.jar;C:\Users\Administrator\.m2\repository\org\apache\shardingsphere\elasticjob\elasticjob-lite-spring-boot-starter\3.0.1\elasticjob-lite-spring-boot-starter-3.0.1.jar;C:\Users\Administrator\.m2\repository\org\apache\shardingsphere\elasticjob\elasticjob-lite-spring-core\3.0.1\elasticjob-lite-spring-core-3.0.1.jar;D:\DevelopSoftware\JetBrains\IntelliJ IDEA 2018.3.6\lib\idea_rt.jar
2022-09-01 10:20:31.751 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.library.path=C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;D:\DevelopSoftware\VanDyke Software\Clients\;D:\soft\xsfp\;c:\windows\system32;C:\Program Files (x86)\Common Files\NetSarang;D:\soft\svn\bin;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\bin;C:\Program Files\Java\jdk1.8.0.172\jdk\jdk1.8.0_172\jre\bin;D:\DevelopSoftware\apache\apache-maven-3.6.1\bin;D:\soft\activemq-01\bin;C:\WINDOWS;C:\WINDOWS\system32\wbem;D:\soft\torGit\bin;"C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.5\sbin;";D:\soft\Git\cmd;D:\DevelopSoftware\apache\apache-maven-3.6.1\bin;D:\DevelopSoftware\apache\apache-tomcat-7.0.106\lib;D:\DevelopSoftware\apache\apache-tomcat-7.0.106\bin;D:\DevelopSoftware\apache-jmeter-5.4.1\bin;D:\DevelopSoftware\nodejs\;C:\ProgramData\chocolatey\bin;D:\DevelopSoftware\Python\Python39\Scripts\;D:\DevelopSoftware\Python\Python39\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;D:\DevelopSoftware\Fiddler;D:\DevelopSoftware\Microsoft VS Code\bin;D:\DevelopSoftware\apache-jmeter-5.4.1\bin;C:\Users\Administrator\AppData\Roaming\npm;.
2022-09-01 10:20:31.751 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.io.tmpdir=C:\Users\ADMINI~2\AppData\Local\Temp\
2022-09-01 10:20:31.751 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:java.compiler=<NA>
2022-09-01 10:20:31.751 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:os.name=Windows 10
2022-09-01 10:20:31.751 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:os.arch=amd64
2022-09-01 10:20:31.751 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:os.version=10.0
2022-09-01 10:20:31.751 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:user.name=Administrator
2022-09-01 10:20:31.751 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:user.home=C:\Users\Administrator
2022-09-01 10:20:31.751 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:user.dir=E:\myWorkspace\myjob
2022-09-01 10:20:31.751 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:os.memory.free=229MB
2022-09-01 10:20:31.751 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:os.memory.max=3632MB
2022-09-01 10:20:31.751 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Client environment:os.memory.total=333MB
2022-09-01 10:20:31.754 INFO 32316 --- [ main] org.apache.zookeeper.ZooKeeper : Initiating client connection, connectString=localhost:2181 sessionTimeout=60000 watcher=org.apache.curator.ConnectionState@2eadc9f6
2022-09-01 10:20:31.757 INFO 32316 --- [ main] org.apache.zookeeper.common.X509Util : Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation
2022-09-01 10:20:31.767 INFO 32316 --- [ main] org.apache.zookeeper.ClientCnxnSocket : jute.maxbuffer value is 1048575 Bytes
2022-09-01 10:20:31.771 INFO 32316 --- [ main] org.apache.zookeeper.ClientCnxn : zookeeper.request.timeout value is 0. feature enabled=false
2022-09-01 10:20:31.777 INFO 32316 --- [ main] o.a.c.f.imps.CuratorFrameworkImpl : Default schema
2022-09-01 10:20:31.782 INFO 32316 --- [localhost:2181)] org.apache.zookeeper.ClientCnxn : Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181.
2022-09-01 10:20:31.783 INFO 32316 --- [localhost:2181)] org.apache.zookeeper.ClientCnxn : SASL config status: Will not attempt to authenticate using SASL (unknown error)
2022-09-01 10:20:31.784 INFO 32316 --- [localhost:2181)] org.apache.zookeeper.ClientCnxn : Socket connection established, initiating session, client: /0:0:0:0:0:0:0:1:51270, server: localhost/0:0:0:0:0:0:0:1:2181
2022-09-01 10:20:31.850 INFO 32316 --- [localhost:2181)] org.apache.zookeeper.ClientCnxn : Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, session id = 0x1006fafd5ce0078, negotiated timeout = 40000
2022-09-01 10:20:31.857 INFO 32316 --- [ain-EventThread] o.a.c.f.state.ConnectionStateManager : State change: CONNECTED
2022-09-01 10:20:31.880 INFO 32316 --- [ain-EventThread] o.a.c.framework.imps.EnsembleTracker : New config event received: {}
2022-09-01 10:20:31.881 INFO 32316 --- [ain-EventThread] o.a.c.framework.imps.EnsembleTracker : New config event received: {}
2022-09-01 10:20:31.940 INFO 32316 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2022-09-01 10:20:31.940 WARN 32316 --- [ main] com.zaxxer.hikari.util.DriverDataSource : Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.
2022-09-01 10:20:32.195 INFO 32316 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2022-09-01 10:20:32.387 INFO 32316 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 1 endpoint(s) beneath base path '/actuator'
2022-09-01 10:20:32.405 INFO 32316 --- [ main] l.s.b.j.ElasticJobBootstrapConfiguration : creating Job Bootstrap Beans
2022-09-01 10:20:32.425 INFO 32316 --- [ main] .l.s.c.s.SpringProxyJobClassNameProvider : create SpringProxyJobClassNameProvider
2022-09-01 10:20:32.710 INFO 32316 --- [ main] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor
2022-09-01 10:20:32.720 INFO 32316 --- [ main] org.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2022-09-01 10:20:32.721 INFO 32316 --- [ main] org.quartz.core.QuartzScheduler : Quartz Scheduler v.2.3.2 created.
2022-09-01 10:20:32.721 INFO 32316 --- [ main] o.a.s.e.l.i.s.JobShutdownHookPlugin : Registering Quartz shutdown hook. myElasticJob
2022-09-01 10:20:32.722 INFO 32316 --- [ main] org.quartz.simpl.RAMJobStore : RAMJobStore initialized.
2022-09-01 10:20:32.722 INFO 32316 --- [ main] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.3.2) 'myElasticJob' with instanceId 'NON_CLUSTERED'
Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 1 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
2022-09-01 10:20:32.722 INFO 32316 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'myElasticJob' initialized from an externally provided properties instance.
2022-09-01 10:20:32.723 INFO 32316 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.3.2
2022-09-01 10:20:32.731 INFO 32316 --- [ main] org.apache.curator.utils.Compatibility : Using org.apache.zookeeper.server.quorum.MultipleAddresses
2022-09-01 10:20:33.572 INFO 32316 --- [ main] l.s.b.j.ElasticJobBootstrapConfiguration : Job Bootstrap Beans created.
2022-09-01 10:20:33.587 INFO 32316 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2022-09-01 10:20:33.602 INFO 32316 --- [ main] com.example.myjob.MyjobApplication : Started MyjobApplication in 13.284 seconds (JVM running for 14.087)
2022-09-01 10:20:33.610 INFO 32316 --- [ main] .s.b.j.ScheduleJobBootstrapStartupRunner : Starting ElasticJob Bootstrap.
2022-09-01 10:20:33.616 INFO 32316 --- [ main] org.quartz.core.QuartzScheduler : Scheduler myElasticJob_$_NON_CLUSTERED started.
2022-09-01 10:20:33.616 INFO 32316 --- [ main] .s.b.j.ScheduleJobBootstrapStartupRunner : ElasticJob Bootstrap started.
2022-09-01 10:20:35.105 INFO 32316 --- [ticJob_Worker-1] com.example.myjob.MyElasticJob : MyElasticJob start, shardingItem:0
2022-09-01 10:20:40.016 INFO 32316 --- [ticJob_Worker-1] com.example.myjob.MyElasticJob : MyElasticJob start, shardingItem:0
2022-09-01 10:20:45.031 INFO 32316 --- [ticJob_Worker-1] com.example.myjob.MyElasticJob : MyElasticJob start, shardingItem:0
2022-09-01 10:20:50.012 INFO 32316 --- [ticJob_Worker-1] com.example.myjob.MyElasticJob : MyElasticJob start, shardingItem:0
2022-09-01 10:20:55.011 INFO 32316 --- [ticJob_Worker-1] com.example.myjob.MyElasticJob : MyElasticJob start, shardingItem:0
2022-09-01 10:21:00.012 INFO 32316 --- [ticJob_Worker-1] com.example.myjob.MyElasticJob : MyElasticJob start, shardingItem:0
5、查看自己的数据库表,也能看到,执行记录有插入了记录
6、如果想通过elasticjob-UI界面查看、修改cron等操作,可以继续下面的操作
(1)下载elasticjob-UI的服务包
https://downloads.apache.org/shardingsphere/elasticjob-ui-{elasticjob version}/apache-shardingsphere-elasticjob-{elasticjob version}-lite-ui-bin.tar.gz
{elasticjob version}是你maven项目里面pom使用的elasticjob版本,最好maven下载的elasticjob-lite版本跟UI版本一致,比如我的就是
elasticjob-UI 3.0.1下载
下载下来后,windows的注意用
tar zxvf apache-shardingsphere-elasticjob-3.0.1-lite-ui-bin.tar.gz 解压,防止windows的工具解压有问题
(2)进入到\apache-shardingsphere-elasticjob-3.0.1-lite-ui-bin\bin,双击打开start.bat(如果linux平台,则执行start.sh)
服务启动完成,端口号为8088
(3)打开浏览器,输出http://localhost:8088
账号密码都是root
登录进入后,全局配置-注册中心配置-添加
填入你在application.properties设置的命名空间、zk地址
elasticjob.reg-center.namespace=my-elastic-job
#elasticjob注册中心配置 本地zookepper地址
elasticjob.reg-center.server-lists=localhost:2181
添加完成后,点击右边绿色按钮,触发下链接,通过后则UI界面连接上了zk上的elasticjob服务
(4)同时也可以配置下读取数据库,触发链接后,就可以在页面上看数据库的表记录
(5)可以手动界面修改、触发elasticjob任务
三、扩展
1、相关maven项目的代码也已经上传,可自行下载:上文elasticjob-maven项目源码
2、深入了解原理,可以看下elasticjob的官方文档:ElasticJob官方文档