添加依赖(
3.0.1
是目前最新的
Releases
版本):
<dependency>
<groupId>org.apache.shardingsphere.elasticjob</groupId>
<artifactId>elasticjob-lite-core</artifactId>
<version>3.0.1</version>
</dependency>
本篇博客介绍一次性调度,之前的调度都是定时调度(通过
ScheduleJobBootstrap
类),现在来介绍一次性调用。实现一次性调用其实非常简单,只需要将
ScheduleJobBootstrap
类换成
OneOffJobBootstrap
类即可,并且作业配置不能配置
cron
时间表达式。
package com.kaven.job;
import com.kaven.job.my.MyKavenJob;
import org.apache.shardingsphere.elasticjob.api.JobConfiguration;
import org.apache.shardingsphere.elasticjob.lite.api.bootstrap.impl.OneOffJobBootstrap;
import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperConfiguration;
import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter;
/**
* @Author: ITKaven
* @Date: 2021/11/20 17:05
* @Leetcode: https://leetcode-cn.com/u/kavenit
* @Notes:
*/
public class Application {
public static void main(String[] args) {
OneOffJobBootstrap oneOffJobBootstrap = new OneOffJobBootstrap(createRegistryCenter(), new MyKavenJob(),
createJobConfiguration());
oneOffJobBootstrap.execute();
}
private static CoordinatorRegistryCenter createRegistryCenter() {
ZookeeperConfiguration zc = new ZookeeperConfiguration("192.168.1.200:9999", "my-job");
zc.setConnectionTimeoutMilliseconds(40000);
zc.setMaxRetries(5);
CoordinatorRegistryCenter regCenter = new ZookeeperRegistryCenter(zc);
regCenter.init();
return regCenter;
}
private static JobConfiguration createJobConfiguration() {
String jobs = "0=看论文,1=做实验,2=打比赛,3=开组会,4=看书,5=其他";
return JobConfiguration.newBuilder("MyOneOffJob", 6)
.shardingItemParameters(jobs)
.overwrite(true)
.build();
}
}
输出如下图所示: