天天看點

ElasticJob‐Lite:一次性排程

添加依賴(​

​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();
    }
}      

輸出如下圖所示: